It's kind of a toss up in win98/me/95/3.1.
This question comes up all the time. The similarity between all these is MS-Dos. That's all 'Windows' really is, is just ms-dos with a graphical user interface. It's still got 16 bit drivers, and the whole 16-bit works. With that in mind, 16 bit resources are consumable, especially if there's a memory leak because only so much memory can be allocated with 16 bit addresses. So, win98 will slow down and crash. It's a matter of time, period, until the computer reboots. A prime example of this is letting Symantec Cleansweep look through your registry for crap entries. After it's done, try to surf the web, or play a game. After yelling WTF! a few times, check out Sisoft Sandra's report of free 16 bit resources. That 640k just doesn't go far....
Anyway, WinNT is a 32 bit OS. It also doesn't allow 'direct' access to *anything* (other than the video card under direct draw), which means the kernal has the final say over operations. WinXP is just nt, 5.5 or 6.0. Whichever.
Bottom line: If you aren't running any programs/games which only work with MS-dos, or if you strictly run applications (no games), NT is the way to go as far as 'Windows' is concerned. Win98se will 'recognize' up to 512meg, but you'll have to tweak your settings in order for it (and any apps running) to use half of it.
As far as FAT32, do this math. 2**32*64k=Total kilobytes addressable under FAT32. That's binary 2 to the 32nd power (32 bits) times the maximum cluster size if you whack the bejesus out of format.com or use another formatting program.
It ends up being 274,877,906,944 K.
<font color=blue>I hacked Msft, and all I got was this lousy source code.....</font color=blue>