Historically, areas with lots of numbers got a shorter area code. London was 01,
In the US, things are different. You have a seven-digit phone number, and a 3-digit area code. The pecking order here is the number of clicks for a rotary phone (and hence dialling time) - add up the digits of the area code, counting 0 as 10 to see how important your area was when they handed them out. Guess where has 212.
This scheme has its own logic, but it is not well-coupled with billing. Cellphones have numbers in the area code of the billing address, and calling them costs you more. Local calls are included in your monthly fee.
Long distance is by default charged at ridiculously inflated prices. Unless you buy a long distance service plan, you'll be billed a dollar a minute or more. There is no good way of telling what a call will cost you from the number you dial, and you won't find out for a month until you get the bill.
There is one particular trap for the unwary that I fell into recently. Because of the historic size of area codes, some calls to the same area code are not counted as local, but are 'local toll' calls. Unwittingly, I had entered just such a number from the list supplied by my ISP into my computer to dial them when I updated the OS. As any kind of broadband is unobtainable in our area of the 'Capital of Silicon Valley', and as the only people who call after 8 pm are tele-marketers (our family being in a different time zone), I tend to dial into the net and leave the computer connected until I go to bed hours later.
I got the next Phone bill and saw a charge for $77 for local toll calls, to a number in Gilroy. I realised what had happened, changed the number and used the online billing service to complain to AT&T about this bill. No response.
I got the next bill. This time there was a charge of $493 for local toll. I called AT&T, escalated my way through customer service for 3 hours, faxed the details to the Disputes department, and now, a few weeks later, they still want nearly $600.