You can use RecordMyDesktop which can be setup to capture sound too.
Istanbul is a gnome app to record your desktop
You can also use screentoaster which is an online service that is platform independent and relies on java. (It works a treat.)
You can pre-record the sound and then use VLC by going
- Capture Device
- Capture Mode to "Desktop"
- Set frame rate
- Set File Name
you can then use ffmpeg or Mencoder (which is part of Mplayer) to merge the audio and video file.
In fact ffmpeg can also be use on its own to save a screencast by doing
ffmpeg -f x11grab -s 1280x800 -r 60 -i :0.0 ~/name.mpg
replace 1280x800 by your resolution and 60 by your desired fps.
you can record the sound using Audacity, and then merge the audio and video files. (shouldn't be too hard to set up a script that starts both apps at once, etc...)
Subtitles, Zooming, editing, etc
Subtitles Can be added using KSubtitle. You can also use The Open Movie Editor to do this, (but you'll need to use png images, which isn't ideal) and Pitivi or cinefx for editing your video. Avidemux will also add subtitles to an avi file as shown here
It'll be really hard to find all the features you request in a single tool. I advice first getting a nice video/audio file and then editing it with zooms, annotations, etc... It really doesn't matter what format you capture, since you'll be able to convert using ffmpeg.