1) How and who generates these public/private keys. I assume anyone can generate ..but whats the criteria
The software you are using to create keys generates them. The range of valid private keys is governed by the secp256k1 ECDSA standard used by Bitcoin.
2) Who keeps track of which public keys are generated and what is its corresponding private key .. as far i understand there is no one so i wonder how it works
Nobody keeps track. It is just statistically improbable that there is a coincidence of the same keys being generated again.
3) If it is a random public key with no one keeping track of addresses in use, how does the system ensure same address is not being used by two different people. i.e how do we know the key generate has produced a key that is not already in use
Again.. it is just impossible in practice that it happens. It would be like winning the lottery on steroids.
4) we keep hearing suggestions about disposing keys and keep creating new ones for security reasons. While it is secure to move on to new address as frequently as possible, my question is how sustainable is this approach. How big is the address space and whats the chance of exhausting the addresses and stumbling on reused addresses.
And again, it is just a non issue. In fact, there's people generating addresses constantly because they are cunts and are trying to cause that coincidence in purpose:
https://lbc.cryptoguru.org/aboutGood luck with that.