An ethereum private key is simply a number randomly chosen from the range 0 to about 2^256. This is an enormous range; the chance that two people independently the same private key is incredibly small (1 in 2^128).
The public key is determinsitically generated from the private key, such that the private key uniquely determines a public key.
Two different public keys could theoretically result in the same address, as the address is a truncated hash of the pubkey. Again, the chances of this are astronomically small- in this case 1 in 2^80, or 0.000000000000000000000082%
Edit for more details:
The public key in it's raw form is 65 bytes, (it's an x,y pair on an elliptic curve). It can be compressed to 33 bytes, though (take just the x
and a parity byte)
The randomness source isn't specified, but most implementations will use their OS randomness source (/dev/urandom)
Again, while there is a chance of two peoples addresses colliding, there's a higher chance of being stuck by lightning while simultaneously winning the lottery about a trillion times.