The ones that I find most useful as a programmer are the text object commands. These go like <action>i<object_name> for "inside" delims and <action>a<object_name> for "around" (including delims>. The object name is very often a particular delimiter.
So: want to yank what's inside some html tags? yit want to change inside round parens? ci( Want to delete the {-delimited block? da} (or da{}. likewise, yi' or ca" or whatever all do what you would expect.
It's incredibly useful for a programmer because you don't need to move to the part of the line you want to operate on, so you can do like yypci" to copy the current line and edit what's inside double quotes.
Vimcasts.org and "Practical vim" are good sources for this sort of thing.