Aegisub is an extremely powerful tool for creating and editing video subtitles.
The program gives you an enormous amount of control. The Style Editor, for example, allows you to choose your text font, size, style, colours, scale, rotation, spacing, encoding, margin and alignment. (That can be just as complex as it sounds, but fortunately a Preview window instantly displays the results of any changes.)
There are just as many options to assist with your subtitle timing. Instead of being left to guess, waveform and spectrum analyzer modes help to place your subtitles with absolute precision. Again, this looks horribly complicated at first, but once you've learned the basics it's surprisingly straightforward. The developers suggest that, "with some training", timing 350-400 lines of dialog to a 25 minute clip can be done in less than 40 minutes, and we think they're probably right.
Aegisub includes a host of supporting functions to help you through the process: a spell checker, translation assistant, colour picker, visual timing tools, and more. You even get built-in Lua scripting, for extreme configurability.
There's support for importing just about every video type, of course. And your finished work may be exported in all the usual formats: SRT, SUB, ASS/ SSA, STL, ENCORE.TXT, TTXT, TRANSTATION.TXT, or just TXT).