Re: do the ISP's tell you how many internal IP addresses you can have?
How you set up your internal network is up to you. Your ISP provide the line and the router's public IP - and that's their point of demarcation.
If you set up your internal network in class A (10.x.y.z) you can have exponentially more hosts (16,777,216 or 2^24) because you sacrifice subnets for host bits. Class C network addressing limits you to 254 hosts per subnet, but gives a higher number of subnets with 254 hosts per subnet. Your ISP can't control how you set up your network internally, unless it specifically says so in your service agreement.
EVGA SLI Micro Z68 // Intel i5-2500k // 8GB Corsair Vengeance 1866MHz // Overclocked 2GB MSI R9 270X // Corsair Carbide SPEC-03 // Kingston Hyper-X 120GB // 2TB WD Green + 500GB WD Black