Number 3 is the way to go, assuming you're not doing some crazy serverside preprocessing to get it there. If you know your images will be 75x75, save them as 75x75 images.
I'd personally prefer CSS if the above doesn't apply: You don't have to wait for the the DOM objects to be ready before the size is set, and client-side debugging will be a little easier.
.gallery .fancybox1 img
{
width: 75px;
height: 75px;
}
All of your assumptions about image sizes are absolutely correct. You'd also be dealing with image scaling inconsistencies across browsers. The ideal solution is to only ever display the exact same size of the original image. Of course, that's not always possible/realistic (fluid layout designs, etc).
At this point, though. Make it work, get everything out the door, optimize later. Unless you're working on healthcare.gov, then that's not the right approach at all ;)