It worked! Sorry for the long delay, here's what I did:
Extracing boot partition:
- installed openwrt-21.02.0-rc1-x86-64-generic-ext4-combined.img.gz in a clean never used drive, custom image with original size partitions
- used dd to extract sdb1 to openwrt-21.02.0-rc1-x86-64-generic-ext4-boot.img
Then, to test if this image works:
- installed openwrt-19.07.7-x86-64-combined-ext4.img.gz custom image
- resized boot and rootfs partitions using gparted to 512MB and 10GB
- created a 240GB at the end of drive leaving 6,5GB free before it
- installed openwrt-21.02.0-rc1-x86-64-generic-ext4-rootfs.img.gz into sdb2, custom image with original partitions size: OpenWRT 21.02 booted even with kernel 4.x
- installed openwrt-21.02.0-rc1-x86-64-generic-ext4-boot.img into sdb1: OpenWRT failed to boot unable to mount rootfs
- booted Parted Magic, mounted sdb1 and fixed grub.cfg with root=/dev/sdb2 (very sadly /dev/disk/by-label/ doesn't work, so we gotta make sure that sdX must always be the same letter, I'm also unable to find correct partuuid)
- OpenWRT boots with kernel 5.4.111
- GParted and fdisk both report partitions with sizes 512MB and 10GB, I haven't tested filling them but they mount without errors on OpenWRT and Parted Magic
I also followed How to set root filesystem partition size on x86 ImabeBuilder? - #6 by Hikari where @jow teaches how to build image with custom partitions sizes. But at some point it seems to store the whole image on RAM, so we need enough RAM for the size we want on them. I was alrdy using 10GB and this frustrated me, so I just gave up again and continued with images I had before with original sizes.
Surprisingly, after dding both partitions separately, having images on default sizes and partitions resized, resulted partitions remained with bigger sizes. I didn't even have to resize them back. I guess that partitions sizes are stored on MBR, then since MBR wasn't rewritten, their size didn't change and sdb3 also wasn't lost. GRUB also remained on 19.07's v2.02, so it wasn't updated.
The more important anyway is to be able to have the 3rd partition where data, logs, backups and Yamon are stored, and be able to install new releases without losing it. And that worked! Of course, to do it on production we must backup the whole disk and partitions and test the upgrade on VM.