I'm starting to get my head around Bitcoin, Blockchain etc. but I want to learn more about private keys, their generation, and use.
As I understand any 128-bit sequence can be a private key which can, in turn, be used to generate a 32-bit address using a one-way function.
1. Is there a set of rules that narrow down what is a good private key?
2. Is there anything in place to avoid collisions (multiple private keys to one address) other than statistics?
Also, roughly how many public addresses are currently storing bitcoin?