How do I generate P2WPKH address?
You can't. Such addresses don't exist yet.
I assume that the lack of an address makes the option P2SH-P2WPKH to be disabled when trying to send to a self address.
No, that is disabled because segwit is hardcoded to be disabled on mainnet for now. We will be releasing another version with segwit enabled soon.
What is P2SH-P2K? Pay to public key?
Yes. That uses compressed keys and that is pretty much the only reason you would want to use it.