Do you mean program WITH the phone, or program FOR the phone?
Not sure about programming with it. Seeing as it is an android device, there may be an android app for this, but you would haev to do some research. If you mean programming FOR, then of course you can! Do a quick google and see what you can turn out.
Good luck :)
If you go on the android developer site (http://developer.android.com/index.html), you can see some development devices. The "Nexus One" is listed, as well as the "ADP 2", though to use these for development, you have to buy them sim-unlocked from android or somewhere. Have a look round the site and see what you can find.
It means that you can put a sim-card from any network into the phone. For example, if you buy a phone from orange, you can only put an orange sim in it. If you buy a sim-unlocked phone, you could put in an orange sim, vodafone sim, 3 sim etc.