If your need for Windows is ephemeral remember:
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
As for swap you should be able to modify that afterwards - if necessary by using a swap file (while I learned just allocates the blocks and then hands them to the kernel and bypasses the filesystem - not sure what happens with ZFS where the filesystem IS the “block” device.
Can you dump to a shell during Ubuntu install (check the other screens with ALT+F2 etc or whatever it is to switch text terminals)? Perhaps you could repartition right after it creates the swap and root FS.