The organization of these addresses is a bit of a holdover from the old classful addressing system used before 1993. In the classful system, the first few bits of the IP address defined the network size. Specifically:
- An address that started with a 0 bit indicated a "class A" network with an 8-bit prefix (what we'd now call a "/8"), so 0.x.x.x - 127.x.x.x were the class A networks (although 0.x.x.x and 127.x.x.x were reserved).
- An address that started "10" in binary indicated a "class B" network with a 16-bit prefix ("/16"), so 128.0.x.x - 191.255.x.x were the class B nets.
- An address that started with "110" in binary indicated a "class C" network with a 24-bit prefix ("/24"), so 192.0.0.x - 223.255.255.x were the class C nets.
There were also class D (multicast) and E (reserved), but they're not important here.
When they picked address ranges for private use, they wanted some from each class (to give organizations some flexibility in setting up their internal networks). There weren't many class A nets, so the just allocated one: 10.x.x.x. Class B's were a bit more plentiful, so they allocated a block of 16: 172.16.x.x - 172.31.x.x. There were plenty of class C's, so they grabbed 256 of them: 192.168.0.x - 192.168.255.x.
10.x.x.x happened to be available because it was originally allocated to the ARPAnet backbone, and that had been shut down. I don't know why those specific ranges of class B and C nets were chosen.
The classful system was inflexible and inefficient, so it got replaced by the current classless system, where network prefixes can have any length. Under the new system, the private class A net stays the same (but gets written differently: 10.0.0.0/8), and the groups of private class B and C nets get coalesced into normal blocks of addresses: 172.16.0.0/12 and 192.168.0.0/16. And since we're classless now, you can break those blocks up any way you happen to find convenient.