Typically, I use the GParted Live CD
to create/resize partitions.
If you don't already have XP installed, I would do the following
/dev/hda1 /boot 100MB
/dev/hda2 NTFS 20GB
/dev/hda3 Fat32 20GB <-- for shared files between linux and windows
/dev/hda4 swap 512MB
/dev/hda5 ext3 rest of drive <-- for linux
I make a separate boot partition so that if I ever delete linux, I can still boot windows using the linux bootloader (I use grub). Note that you can only have 4 primary partitions, so really the swap and ext3 partition will be on a logical partition.
If windows is installed already and you don't want to reload it, boot into safe mode, disable virtual memory and defrag the drive. Then GParted can just resize it. Then you can put boot as the third drive and keep your windows drives together.