[1] It is dual to the top type, which spans all possible values in a system.
If the bottom type is inhabited, its term(s) typically correspond to error conditions such as undefined behavior, infinite recursion, or unrecoverable errors.
Besides its use for functions that just throw exceptions or otherwise don't return normally, it's also used for covariant parameterized types.
It is present in the type signature of functions guaranteed to never return, for example by calling panic!
It is also the type of certain control-flow keywords, such as break and return, which do not produce a value but are nonetheless usable as expressions.
[6] It is comparable to Nothing in Scala and represents the intersection of all other types as well as an empty set.
[8][9] In JavaScript with Closure Compiler annotations, the bottom type is !Null (literally, a non-null member of the Null unit type).