You can use gparted to shrink partitions.
After you installed windows, you can use EasyBCD to edit the Windows boot manager for that it gives you the option to load Linux.
I know it works, I have done it once.
If you put grub in the MBR, then you will get into trouble when some settings change (e.g. the kernel renames the /dev/sda1 to /dev/hda1 etc., and then it will boot neither Windows nor Linux.
I don't know whether you still need to move grub from the MBR to to /dev/hda1 or wherever your primary Linux partition is, but I think it works without that as well.
I would install a Windows driver that enables windows to read the ext3/4 fs.
I don't know whether something for ext4 exsts already, but ext3 was definitely supported, in order to access data on the Linux partition on Windows.