You can use gparted to shrink partitions.
http://gparted.sourceforge.net/download.php
After you installed windows, you can use EasyBCD to edit the Windows boot manager for that it gives you the option to load Linux.
http://neosmart.net/EasyBCD/
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.