Serge has written a lot of detail on using the AlternateHeader parameter in ONET.XML. This is the best way to customise those hundreds of admin pages in the _layouts directory.
http://weblogs.asp.net/soever/archive/2004/06/01/145831.aspx
Unfortunetly AlternateHeader doesn't customise the web part pages or the list pages, which are of course the pages that make up 99% of the site for the average user. Unless I've missed a trick of course, let me know!
To assist in editing the ONET.XML file, and those templates, here are a few pointers.
When editing the NAVBARS elements, an iisreset will be required to see the change.
When editing the top PROJECT element, no amount of restarting will pick up the changes, the AlternateHeader, CustomJSUrl, and AlternateCSS parameters are grabbed at the point the site is created, so you can't change a site that already exists...
When editing files that the parameters point to, or editing the .aspx templates for the web part pages and list pages, no restarting required at all, the changes are immediatly live!
remember changes in these areas will be the first to get over written by service packs and the like, so think about your changes carefully..