Here's my response to the terminological issues raised:
Nerd: A person who, on top of any latent inability, has decided that their social incapacity is just fine because social relations with the other human beings just aren't that important. A nerd will consciously choose to do what they consider very fulfilling non-social things, sometimes making a lot of money, sometimes none at all in place of the social things they have decided are not a priority. People who spend a lot of time programming fit well into the nerd definition. For nerds, the world outside of their interests is not only hard to cope with but boring.
Geek: A person who has difficulty multi-tasking and geeks-out about various things. Socially, this often results in inappropriate volume and intensity in conversation because the conversation, not the individual or the party are what really matters. A geek can move or refocus his tunnel vision but cannot actually turn it off. Geeks are notoriously socially inept because they have a choice of concentrating on the other person's verbal communication or non-verbal communication but not both. For geeks, the world is fully of interesting things to drop what you're doing and go get obsessed with.
Spaz: A spaz is someone who understands that they're out of their depth in a social situation, even when they're not. The result of this realization is to immediately become totally out of their depth. Essentially, being a spaz is a kind of social drowning man syndrome where, as it becomes more evident that one is drowning, one thrashes about more and more violently.
I'm proud of having progressed from being a nerd to a geek. And my anxiety management is getting better so I'm only sometimes a spaz.