The easiest way to non destructively manipulate your partitions is with bootit ng (
www.terabyteunlimited.com). Get it and make a boot disk and boot from it. Make sure you press cancel or escape at the initial screen so that you can go to the partition work dialog. The rest should be very intuitive. The only caveat is that I don't think you can change the order of your partitions without deleting them and then recreating them.
Beware, Windows XP doesn't like shrunken or moved partitions. When I slid my Windows boot partition to the front of the hard disk and shrunk it, it hung before the login screen. It seems that you need to clear the boot signatures in the MBR (bootit let's you do this) and delete the keys in HKEY_LOCAL_MACHINE/system/mounteddevices (something like that) before you boot from a shrunken/ moved Windows partition. Other symptoms include hanging when uninstalling applications.
1GB for swap is already more than enough and anything more would be an overkill in most cases. The swap behavior in Linux is different than in Windows, which generally uses swap more to free memory for other applications, so the Linux equivalent for a 1gb windows swap file is less.