Back in the pre-broadband days, it was useful to set the width (and/or height) of an image in the HTML because that reserved the space for it whilst the image loaded. Otherwise the layout shuffled about during page load. Nowadays, that isn't so much of problem, and you should generally use the CSS settings (see below). However, please note:
Using the CSS settings to make images LARGER is often a bad idea, because the images quickly become fuzzy and look unprofessional.
Using the CSS settings to make images SMALLER can waste bandwidth, unless it avoids downloading multiple copies of an image in different sizes. So that is less clear-cut.
If you DO use the width or height setting on an image, you should generally only set one or the other. That way the system automatically scales the other dimension to preserve the aspect ratio. E.g. say you have a 300px by 150px image that you want to display 2/3 size, you can set:
<img class="reduced" src="path/name.jpg" alt="<!-- what the image shows -->">
The image is displayed 200px by 100px. Note: Setting the display size in the CSS has the advantage that if there are multiple images you have scaled and you decide to change the scaling to 240px, you just amend the CSS to:
and ALL the images you have scaled with class="reduced" automatically adjust!