These types correspond to the "raw machine" types you would use in C: `Int#' (long int), `Double#' (double), `Addr#' (void *), etc. The primitive operations (PrimOps) on these types are what you might expect; e.g., `(+#)' is addition on `Int#'s, and is the machine-addition that we all know and love -- usually one instruction.
A numerically-intensive program using unboxed types can go a lot faster than its "standard" counterpart -- we saw a threefold speedup on one example.
Please see Section See section The module `GHC': really primitive stuff for the details of unboxed types and the operations on them.