Since it's a Linux-compatible partition with relatively little data and you have a few larger empty spots in your partition layout, I'd suggest you just
- backup the contents of the partition,
- delete it¹,
- recreate it in one of the larger empty spots (e.g. the 900 MB one),
- change the mount information in
/etc/fstab (since you just replaced the partition UUID with a new one),
- mount it, and
- copy the data backup onto it.
Since this is the
/boot partition containing your kernel, you'll need to make its new position known to the bootloader (usually GRUB) afterwards.
The exact commands depend on the distribution you're using, but you'll usually boot a live CD/USB of your distro, mount your partitions in a
chroot environment, and run
grub-install /dev/<your main disk>.
With prior experience or a good tutorial, that's done in five to ten minutes. ;)
That should be much faster than moving around multiple large filesystems (which involves more than just moving the first few MB to the end of the partition, since the filesystem on the partition has to stay consistent).
Besides, I'm not sure if Windows likes having "Microsoft reserved" partitions moved around: partitions like that are often used for "revert to factory defaults" features and have their partition number and/or position hardcoded somewhere.
¹ Deleting it before recreating it only serves to keep the partition number the same. If you don't care if the partition gets changed from
sda4, you can create the new partition and copy over the data straight away. That way, you might even get away without requiring a live CD/USB after all, just running everything (including
grub-install from your existing Linux system.