I've been struggling with this one for a while on a DB i've been creating.
Basically I agree and disgree with what has been said so far.
Phone numbers are quite complex when you look at all the telecoms in the world.
Nothing is standard. For this reason I think I agree with varchar. (mostly to get the breaks right)
Don't store country codes with the numbers. Store the country(prolly full address too) of the number in the DB and have the country code and whatever extra dialing specifics added on the fly based upon where you are.
At least that's the direction I plan of traveling down.
The other question is how big? I'd love to know the answer to that one. The largest number i have seen (with country code I think) was about 17 chars. I wasn't even thinking about extentions at the time (probably better as a separate field).
I went with about 20 chars, just to cover everything I could think of. If anyone knows what the longest phone number is (with and without country code) i'd be very interested.