None of this information is really documented anywhere... They're primarily in some version's release notes. The information that you are looking for can probably be found in the
0.16.0 Release Notes1) Which wallet versions are required before core will generate each type of address
Being able to choose address types was introduced in Bitcoin Core 0.16.0, all current address types (
legacy,
p2sh-segwit, and
bech32) were introduced in this version.
1a) or under what circumstances (e.g. with a unfinished keypool) it will not generate certain types
If the wallet still contains uncompressed public keys in the keypool, only legacy type addresses will be generated for those keys. Otherwise all address types can be generated if there are any keys in the keypool.
2) Which addresses can be converted to other types (within what restrictions) and how to do that
Bitcoin Core does not allow you to convert addresses to other types. You cannot do this in Bitcoin Core.
3) Which versions of core support which addresses and which wallets
All addresses are supported for all wallet types (HD and non-HD) so long as the individual keys are compressed. If a key is uncompressed, only a legacy type address will be returned.
This information SHOULD be somewhere in the core version but alas I've been unable to find it (with google help either)
Unfortunately it isn't. Like a lot of things in Bitcoin Core, it isn't really documented.