A lot of this depends on your experience, time, ambition, and goals. There are a lot of different ways to optimize. If your pages don’t change every second, you can cache them for X amount of time. That prevents excessive load on the MySQL server.
Graphics aren’t too much of an issue, but there are a few things to consider: your audience and your format. Your audience determines how large (both in number of pixels and in file size) the images need to be. Thumbnails are a good idea and the GD library of PHP is a good starting point for image manipulation. You can change sizes, apply filters, etc. and save, cache, or simply send the results. For format, that is determined by what type of image it is and the needs of your audience. For example: If you want fast-loading photographs, JPEG is still probably the best answer. If you are showing floor plans, images with minimal colors, etc. then PNG is something to look at (8 bit is especially good for simple pictures with 256 or less colors).
How large of an audience are you expecting? If the audience is going to grow over time, then it’s usually best to start with a solid design and efficient code and go from there. As you gain visitors, you can add caching and other resource savers. Of course if you are going to have a million visitors in the first day, your needs will be different.
Another thing to remember is that validated markup and CSS will help quite a bit as well.
Sorry that I can’t recommend any resources. Pretty much everything I know I’ve learned through practice and collaboration.
Check out Gordaen’s Knowledge, the blog, and the MR2 page.