I don't know whether it's still true, but in past versions of Windows, it was absolutely required that the Windows system be in a primary partition, and its preferred position was at sda1. Your swap partition can be a logical one with absolutely no problem, as can both of the Linux system partitions.
I no longer dual boot (except for my seldom-used laptop) so my approach may not help you at all, but here's the setup I'm using on my main box here:
I have the system at sda1, /home on sda2, and swap on sda3. The swap is almost 5 GiB (my RAM is 3 GiB) and is never used. My home directory contains quite a few virtual disk files, totaling more than 170 GiB, which is where I run my Windows applications, with a separate virtual machine for each group of apps.
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a20d4
Device Boot Start End Blocks Id System
/dev/sda1 * 1 6079 48829536 83 Linux
/dev/sda2 6080 60181 434574315 83 Linux
/dev/sda3 60182 60801 4980150 82 Linux swap / Solaris
Your needs will be considerably different, but this may help you get an idea of what can be done. The total size of your drive will have a lot to do with how you parcel it out, of course!