The vast majority of the coding is done in gedit, the GNOME text editor (see also the gedit wiki). gedit is more than just a text editor though, it allows craftsmanship. It has a multitude of both built-in tools and plugins that make a developer's life easier. I use line numbers, line highlight, spell checking, syntax highlighting and others all the time. I wouldn't trade gedit for Adobe Dreamweaver or MS Frontpage any day of the week (I've used both). I use a file manager for managing files, and a dedicated FTP tool if required (though I can certainly understanding not wanting to use the MS Windows file manager).
I test on Firefox
3.6.x mainly, the browser that comes by default with the LTS version of Ubuntu (12.04) that I use. I also test in Epiphany (the Gnome Web Browser), Chromium and Lynx sometimes (recently I've tried Orca as well). I use lots of plugins for Firefox too. For web dev, the main plugin I use is the ever resourceful Web Developer toolbar. It provides quick and easy methods for all sorts of tasks, including turning off JS, CSS and images, resizing the browser window to pre-defined sizes, sending a page to a validator and so many other useful things. But I also use other plugins sometimes (like `Live HTTP Headers' and `User Agent Switcher').
Talking of validators, I used to only use the online version of the W3C validator, but I thought this wasteful (sending something off across the 'net all the time like that). So, using apt-get (actually Synaptic), I downloaded both the W3C Markup Validator, and the WDG HTML Validator. Score! Once I made sure that they both could be accessed at localhost, I added them to my Web Developer toolbar. I can now validate my pages even when the power is off! (Such as, as I write this..., I like my laptop.)
So, I have Apache (and PHP and MySQL) installed locally as well. You wouldn't believe how much time that takes off development compared to uploading and checking online. People might rave about WAMP or MAMP, but I just say LAMP. My OS (Ubuntu GNU/Linux, based on Debian GNU/Linux) takes care of everything for me, from dependencies to updating, everything. For serious development, you develop on the same sort of system that your site will be deployed to.
I use the bzr (Bazaar) DVCS to manage changes to my website, and bzr-upload (see also) to keep it up to date.
Originally most of the site was handcrafted, each individual < and > carefully position, with "s put just so to hold the attributes of the various tags. However, as time went on, I started using more and more PHP. Not just to insert menus and footers, but to even assemble whole pages from individual chunks. (For example, most of the webdev pages are put together in this fashion.)
This approach allows me to focus on creating. For example, to make a style sheet just for this section of the site, I just created it in the styles folder. No need to add any <link> tags, I just created the style sheet, and it is automatically inserted correctly.
Of course, I still create all the individual pieces by hand, carefully putting an <abbr> tag here, massaging some characters with a careful class so that the style is perfect and so on. But the bulk of the boring stuff is now being done by automation. Over time, I'll gradually introduce more and more automation as well. After all, that's what computers are good for.