If you'd bought a 2TB you could just dd
image the windows disk to the new drive. If you can convince Windows to downsize its partition and then use a partition editor on a USB liveboot to identify the drive sectors you could maybe still image the windows disk. Big "if."
As to the second question, use block IDs-- the filesystem's UUID. Grub is lazy and assumes a single root (the first found) partition so if you want a particular boot entry to use a specific root slice, you'll need to ensure each OS entry in grub uses the right UUID for its kernel root
parameter. Loading the right root gets you the rigjt /etc/fstab to mount that root's expected partitions
Honestly you'd be better off running your stuff in VMs. Dual-boot is a nightmare.