I don't know of a way to save them "as defined in the GUI", but when using third-party firmware (Merlin, FT (FreshTomato), dd-wrt, etc.), you can often manage such things *outside* the GUI.
For example, on my FT router, I can create port forwards using iptables (the routers' firewall) and apply them via a script when the router boots, rather than using the GUI. Functionally there is no difference. But it's a LOT easier to save and reinstall that script each time the firmware is updated then having to reapply all the port forwards using the GUI. Other items can be managed similarly (static leases, static routes, etc.).
Some users will instead save and restore the relevant nvram variables (where the router actually stores this information for the GUI) individually, thus everything remains managed by the GUI.
But regardless of the technique, it's all made possible by the fact I'm using third-party firmware. Using OEM/stock firmware, you usually don't have such options (not unless it offers shell access (e.g., ssh/telnet), which in my experience is rare). That firmware pretty much deals w/ backup and restore as a whole. As a result, that makes using those backups for firmware updates problematic. *Everything* gets updated, even those things that shouldn't be.
It's stuff like this that drives ppl's interest in third-party firmware.