Are there an infinity of public addresses for a wallet?
A wallet contains a collection of keys, not just a single one.

Every private key has exactly one associated public key. Addresses are shortened forms of public keys (they're encoded hashes of the public key).

Change addresses are indeed public. Like every other address, the key for it is independent from the other keys in your wallet. Note that some clients send change back to one of the addresses the inputs were previously assigned to, in which case it's obviously the same key that is reused.