I can recommend PSPad at the moment; always been a WordPad-only type before.
Not many people are talking about the type of code you can write, in this thread.
I think that most people here will have already banished <font> and <br> tags, and single pixel spacer GIF images, to history now?
Using CSS for styling makes for very lean HTML code. However, there are several ways to use CSS.
Some people put inline style="..." attributes in their HTML code. That is not a good solution. It has almost as much code bloat as the <font> tags that it replaces.
The other way is to have all the CSS in a stylesheet. This can go in the <head> section of the document, or better yet in an external .css stylesheet file. The latter is the best, because the stylesheet will be served once per visitor, rather than once per page view, and having one file for the whole site means that the style of every page can be instantly changed with just one edit.
There are several ways of writing HTML too. One is an unstructured tag soup, which may or may not validate: people use <br> tags to make spaces, and multiple to indent. These produce bloated code too.
To use CSS you really need to get the page to validate, but even moreso it needs a structure.
There are at least two types of HTML structure too: one is to use multiple nested <div> and <span> tags to make logical blocks of code.
These, however, have no semantic meaning (like <div class="mainheader"> for example) but this method is often favoured by people that also use CSS for positioning as well as for style. Personally I don't like that method.
The methodology that I now prefer is to make the page from headings, paragraphs, lists, tables and forms and then to style those elements using CSS in an external stylesheet. I then apply classes for exceptions, like <p class="footer"> or <ul class="nav"> and so on. I also find that if I am repeating a class in the HTML multiple times, then it is better to add the class name to a parent container and rewrite the style definition using a different type of selector.
I find that writing structured code, using the proper HTML building blocks (h1, h2, ..., h6, p, ul, ol, table, form, img which are all block-level elements) makes for the leanest and most easy to understand HTML code of all... which then becomes very easy to style too. It is also a doddle to get it to validate, as there is never a heap of multiple nested tags to wade through.
To learn HTML you need to know a couple of dozen tags, and their acceptable attributes and attribute values. To learn CSS you need to know about 20 or 30 properties (margin, color, etc).
The W3C validators for HTML and CSS are the most useful tools on the web [validator.w3.org ] and [jigsaw.w3.org ], along with WebBug for checking response codes for pages (such 200, 301, 404, etc) and Xenu LinkSleuth for making sure that all of your internal linking is OK.