a) An enterprise address is such that does not contain the delegation part and cannot therefore participate in staking. The general idea was that organizations such as exchanges will use the addresses so they cannot participate in staking. It was pretty naive I guess.
b) A pointer address does not contain the key directly, but instead points directly to a slot, tx and certificate that is already on-chain. The advantage is that the pointer is smaller in size, but also can be used with a certificate that is not registration on-chain yet.
Stake address is any address with the delegation part. Stake address is also a base address. (1) to (5), they are all considered stake addresses as they can participate in staking. (4) and (5) are pointer addresses as they are pointing to a certificate. (6) and (7) are enterprise addresses as they do not contain any delegation part.
Yes, PaymentKeyHash is the hash of a payment key. ScriptHash is the hash of the script such as Plutus.