hmmm, a bit confusing, maybe I can add some clarification, that also helps other readers. A 32b number or a 20b number doesn't seem to be an exact description. Bytes are abbreviated as capital "B", and bits are abbreviated as lower "b" (IEC 80000-13, IEEE 1541). A 32b privkey would be 4 Bytes, that is a bit too short :-)
A Bitcoin privkey is 32 Bytes (which is a 256-bit number). A Bitcoin address is a string of 26-34 chars, to be more "human readable". It is derived from the priv key in the following way:
privkey --> public key --> sha256 --> ripemd160 (here we actually have 20 Bytes) --> + network Byte --> double sha256 --> +chksum --> +Bytes reordering --> base58 encoding. This reads more complex than it actually is, a good overview here: http://gobittest.appspot.com/Address
So your last question is a bit tricky:
Is it true that there is many Private keys that have the same 20b hash
(Address)?
Generally the idea of the hashing is, that you enter a string into the function, and it returns a fixed length output. If you change a single bit in this string, the result returns totally different. And as Pieter said, going from output to input is nearly impossible. So if you are asking:
if you can generate the same address (or public key) from different private keys? --> no (until today, there was no proof for it, but there are projects on the way to find "collisions")
if all priv keys generate (Bitcoin) addresses with the same length? --> no, addresses have 26-34 Bytes length.
if all priv keys generate the same length of pubkeys (and hashed 20Bytes long), from which then the Bitcoin address is generated? --> yes