Oh! Gotcha.
First part of the answer:
There are 32 bits in an IPv4 address. The class A address would take up 25% of the bits for the network with the rest remaining as hosts. The B takes up 50% of the address bits as Network number and the rest as hosts and C is 75% as Network numbers.
So with the B you have:
NNNNNNNN.NNNNHHHH.HHHHHHHH.HHHHHHHH
N = Network ID bits
H = Host number bits
Part two of the answer:
The first answer I gave answers why we use 172 - because of the 1010 0001 pattern.
So if we look at the second octet the actual values that the bits represent are:
128 64 32 16 8 4 2 1 <----- "Place value" N N N N H H H H
So when they set aside ranges for private not-to-be routed externally IPs they decided to make the B range equal to 1/2 the address space as network 1/2 as host. But, there was a problem - some older equipment (VERY old equipment) didn't know how to deal with subnetworks (They did fine with the A and C because both use a full octet) so it was decided that the "B" private class would begin with the first network that wasn't in the Zero Subnet - that is to say the second available network so 172.0.0.0 as a network number was out of play so it increments to the next one 172.16.0.0 as the private B range.