With a 512GB SSD with 256GB for Linux you might as well put all partitions on the SSD.
Keep /boot and / on the same device unless you have a very specific reason not to. Further if you're using ext4 there is no need to have them be separate at all. Keep them separate if you use btrfs, raid or LVM.
You should have a swap partition equal to the size of your RAM if you want hibernate to work. It should not be a swap file and you'd want this partition to be on your SSD. While suspend to file is possible on Linux its not supported by Ubuntu.
Putting /home on your second HDD is a good idea if you need the space. Do not make /home or any vital partition of Linux an NTFS partition on a dual boot system because Windows might leave the file system in an unusable state for Linux. Given the size of your SSD you probably do not need to have a separate home. Instead you could make a softlink from say /home/user/Music to /media/hdd2/Music for large files that aren't sensitive to read speed.
I suggest for the two 2TBs to each have a single partition. One NTFS and the other ext4. Put things like extra steam games on NTFS. Put Linux backups on ext4 but if your /home or music or other files is on the HDD instead back those up to the NTFS HDD. Do the reverse on Windows using Windows backup to the NTFS HDD. Use Linux to copy over any files on the NTFS you don't have backuped up to the EXT4 HDD. While having two 2TB HDDs does tempt one to make a RAID I would suggest against this on a dual boot system.
Finally you might consider making two partitions on both drives one NTFS and one EXT4 on each of the same size and just backing them up to each other on both Linux and Windows.