Bitcoin address versions are described on the Address wiki page:
Normal addresses currently always start with 1, though this might change in a future version. Testnet addresses usually start with m or n.
The Protocol specification gives a bit more technical detail:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Aside from distinguishing real and testnet addresses, what is the meaning and purpose of the address version? How and why will it change in future?