From the presence of the msftdata "flag" on the NTFS partition and the existence of /boot/efi FAT32 partition, I see you are using GPT partitioning and are booting in native UEFI mode, instead of legacy MBR and BIOS, respectively. These two nuggets of information have a major effect on the actions you must do.
If your BIOS settings include the option to configure the system to either boot in UEFI mode only or at least prefer UEFI over legacy mode, I would strongly suggest using those settings. They should minimize the hassle of accidentally booting in the wrong mode, as part of recovery operations or otherwise.
First, your /boot/efi partition is not appropriately marked as an EFI System Partition (ESP for short). Since you seem to be using gparted, this means setting the esp flag on that partition; the boot flag will also get set automatically.
(With GPT partitioning, esp and msftdata are not really "flags", but various GPT partition type UUIDs. gparted just presents them as flags, which can be a bit confusing, as a partition can have only one type UUID, and so most of the "flags" will actually be mutually exclusive. With GPT, the boot flag is essentially just an alias for esp for compatibility reasons.)
The position, size and the label "nothing" for /dev/nvme0n1p2 suggests this might be the partition you intended for microsoft reserved. If so, you should set the msftres flag for it: it is just a reservoir of empty space just ahead of the Windows partition, to allow future filesystem conversions and upgrades.
Your only remaining Linux partition would seem to be /dev/nvme0n1p4, but it is marked with a mount point of /home - is that correct? If so, where's your actual Ubuntu root filesystem?
Next issue will be that since you imaged each partition separately and apparently rebuilt the partition table, the unique PARTUUIDs stored in the GPT partition table for each partition will be different.
Linux and GRUB normally use filesystem-level UUIDs instead, so they should be more or less immune to this change. But the UEFI firmware is likely to use the PARTUUID as the primary identifier of the EFI System Partition. This means the UEFI NVRAM boot entries (viewable with sudo efibootmgr -v when booted in UEFI mode) will be stale.
Because Windows has installed a second copy of its boot manager at /boot/efi/EFI/boot/bootx64.efi (the removable media/fallback boot path), it is now the only bootloader the UEFI firmware can find without further input from you. But apparently it either cannot find its configuration file /boot/efi/EFI/Microsoft/Boot/BCD, or the information it contains is invalidated by your changes.
You might try booting in UEFI mode from a Windows 10 installation media and using its "Repair Windows" option. It is probably the simplest way to fix the Windows bootloader, if it works - and you should do it before trying to fix the Linux bootloader, as Windows repair procedure will automatically place Windows as the first OS in the boot order (and may overwrite/delete the Linux NVRAM boot variable). By fixing Windows first, you'll only have to undo that once.
You probably could fix this with just the efibootmgr command. First ensure that /dev/nvme0n1p1 is mounted at /boot/efi, then run (e.g. from a Live CD):
sudo efibootmgr -c -L UbuntuNew -d /dev/nvme0n1 -l \\EFI\\ubuntu\\shimx64.efi
(If you have disabled Secure Boot and /boot/efi/EFI/ubuntu/shimx64.efi does not exist, replace shimx64.efi in the command with grubx64.efi.)
This creates a new UEFI boot variable which will appear in BIOS boot settings with the name "UbuntuNew". You can change that name to anything you want, but reinstalling GRUB may restore the old name, which is likely just "Ubuntu".