How to partitioning is very subjective, but here is my suggestion:
That depends on whether you want to create more partitions (i.e. one for /usr and /opt) or just want to increase the size of /. Generally you don't want to create partitions bigger than a certain size to speed ratio for reliability and maintenance reasons. If all your software comes prepackaged, I would suggest
creating a new partition for /usr (~10Gb). If you're not a fan of package managers and install packages from source, then maybe you should have 1Gb for /usr and 10Gb for /opt (or whereever you install custom built packages). Also you would want to create a partition for home which should get the lions share of space (consider shrinking /data0).
The easiest to use free partition manager that I know of is bootit (
www.terabyteunlimited.com).
To use it, download it and create a boot disk from it and boot from it. At the intro screen, press escape or hit cancel and then go to the partition work dialog. The rest should be self explanatory.
8 Gb for swap? Are you cray? Even 512Mb is almost more than you'll ever need, not to mention that Linux 2.6 doesn't support swap partitions larger than 2Gb as far as I remember. Linux's swapping behavior is different from Windows. Windows tries to swap more so that there is more memory available (probably because it has inefficient memory management) while Linux needs much less swap space since its swap behavior is a lot more conservative.