The Sized trait is often elided, but when explicitly added it asserts that the type has a size known at compile time. This can be useful when abstracting over many types that don't necessarily even share a common trait, such as in an HList.
The ?Sized trait indicates to the compiler that the type does not have a size known at compile-time. Variants of this trait have apparently been available to the internal compiler, but now it has been stabilized and made available for general development.
The unsized keyword was a proposed syntax for indicating that a compile-time size is not known. It was instead replaced with the ?Sized syntax and is entirely redundant.