According to Google Page Speed and Yahoo's YSlow tools, proper caching, GZipping, and the use of ETags are some of the most important things to speed up the loading of webpages as well as reduce the consumption of bandwidth (for both your server and end-user).
Web development is a lot of trial-and-error. With PHP and JavaScript, most of it is logical; X happens and Y is true therefore Z will happen. But when you get into formatting (like rounded corners, testing column widths, making faux columns and so on), you have to write your CSS formatting code and then test it out. If it's not to your liking, you change it. There's no real logic about it.