I do almost all of my gaming through MapTool, which is a fairly detailed open-source virtual tabletop.
MapTool consists of a map, which is pretty high-functionality – light sources and shadows, ability to block line of sight, it uses fog of war, etc. Can create colored overlays in the appropriate shapes for area effects, and it automatically indicates the size of these as you draw them. Moving tokens indicates the distance moved, and you can make “waypoints” to indicate turns.
On the DM’s side, the map consists of four layers that you can manipulate independently, and the system is reasonably good at keeping hidden items in reserve, ready to use, and stuff like that. You can have multiple maps, and you can open and close maps from the players at will, even force them to do transitions between them, and so on.
Character tokens have their own stats, including bars that can be used for HP or whatever, and there are status-effect icons that can overlay these. The DM can determine exactly which stats each token keeps track of, which status effects have icons, supply custom icons, etc. etc.
In addition to the map, there’s a chat interface, which oddly enough accepts HTML as input, so you can do things like <b>bold</b> and <a href="www.google.com">why are you linking Google in a game?</a>. I’ve occasionally seen that put to use in interesting ways (tables to replicate 4e-style power blocks?).
It also has a rather thorough (though slow and annoying) macro language, which is useful in games where you have a lot of powers that have slightly different rules (D&D 3.x, particularly spellcasting, and 4e in general come to mind), though they do take a bit of setting up and my like of them may just be the programmer in me talking. Also helps with things like formatting those 4e-style power block tables.
Finally, there are details like an initiative tracker, a list of the various objects on the map (tokens hidden from the players on the map are also hidden from players on the list), and probably some other stuff I’m forgetting.
I will say that for all it has a lot of features, it is not exactly the most stable or efficient program I’ve ever used. Particularly the line-of-sight/light/shadows/vision-blocking stuff, that frequently seems to cause problems. The macro language is (I think) fairly counter-intuitive, has kind of random restrictions, and you have to be rather careful about performance if you’re doing anything complicated.