- not necessary. You don't need HKTs to have >>= for your favorite monad.
- encodable in functors/first class modules trivially.
- genuinely complicated HKT.
The last point happens far less often than Haskell people believe. (It does happen occasionally, though, and it's indeed annoying when it does).