nftables is better in every way, so it’s not a big loss to simply not use iptables. Now that pretty much everything supports it, there’s no good arguments to keep using iptables.
nftables has a couple of new concepts, but is actually easier to use, I think.
The history of Linux firewalls goes ipfirewall/ipfwadm->ipchains->iptables->nftables, each got more advanced. ipchains had chains, iptables had tables which contained chains, nftables has rulesets which contains tables and chains.
iptables had, e.g. PREROUTING table, but in nftables, you can create arbitrary tables. Which does make it a little more complicated to get started with.
But, it has much nicer CLI syntax and can do more.
We’ll be dropping firewalld and moving to bare nftables for the next major Virtualmin version. It’s lighter weight, I think easier to use, and we mostly don’t need the things firewalld brings to the table. Big firewall wrappers are kind of pointless on a server. I originally picked firewalld because it papered over differences on OSes, seemed like a good way to avoid the iptables vs. nftables question (it supports both), and we already had a Webmin module for it. But, I’ve mostly regretted it…it’s intended to be easy to use, but I’m pretty confident more users find it confusing than iptables (and nftables is nicer than iptables, so it’s much nicer than firewalld).
There are docs to help convert to nftables from iptables, but if your firewall on a server is more than a dozen or so simple rules and an ipset or whatever for fail2ban or sshguard, you’re probably doing something wrong. A server isn’t a router, and complicated firewalls are for security boundaries with complicated requirements (like routers exposing internal devices to the internet, VPN routing, DMZ, etc.).