I took some time to check it in detail. I created an icon with 16, 24, 32, 40, 48, 64, 96, 128 and 256 images. Then I checked which image is shown. All these were done with normal 96dpi. If using a larger dpi, the larger sizes may be used (only checked this a bit in Windows 7). The results:
Windows XP:
- Explorer views:
- Details / List: 16
- Icons: 32
- Tiles / Thumbnails: 48
- Right-click->Properties / choosing a new icon: 32
- Quickstart area: 16
- Desktop: 32
Windows 7:
- Explorer views:
- Details / List / Small symbols: 16
- All other options: 256 (resized, if necessary)
- Right-click->Properties / choosing a new icon: 32
- Pinned to taskbar: 32
- Desktop:
- Small symbols: 32
- Medium symbols: 48
- Large symbols: 256 (resized, if necessary)
- Zooming using Ctrl+Mouse wheel: 16, 32, 48, 256
So the result: Windows XP uses 16, 32, 48 icons, while Windows 7 (and presumably also Vista) also uses 256 icons. All other intermediate icon sizes are ignored (they may be used in some area which I didn't check).
I also checked in Windows 7 what happens if icon sizes are missing:
The missing sizes are generated (obviously). With 16, 32, 48 sizes, if one is missing, downrezzing is preferred. So if we have 16 and 48 icons, the 32 icon is created from the 48 icon. The 256 icon is only used for these if no other sizes are available! So if we have 16 and 256 icons, the other sizes are uprezzed from the 16 icon!
Additionally, if the 256 icon is not there, the (possibly generated) 48 icon is used, but not resized anymore. So we have a (possibly large) empty area with the 48 icon in the middle.
Note that the default desktop icon size in XP was 32x32, while in Windows 7 it is 48x48.
As a consequence, for Windows 7 it is relatively important to have a 48 icon. Otherwise, it is uprezzed from a smaller icon, which may look quite ugly.