I agree with you, I suppose I tend to take those things for granted, possibly because I've been fortunate enough lately to work in environments where both 1) and 2) are pretty much a given (lucky me).
Pair programming is an agile practice and in my experience it is a LOT easier to do agile when you have good people on your team, not just good developers, but good human beings.