No need to speculate about how dom0 works, the memory required or how memory is utilized: The Qubes documentation is fairly complete in this regard. Qubes recommends 16Gb of RAM and that’s a good place to start. Please see below for more detail. There are also a number of Forum posts on this matter.
Dom0 needs around 1G to run the WM and all those daemon staff. I would recommend that you leave at least 1.5G for dom0.
sys-firewall, by default, is the update proxy of dom0, and needs to parse the repositories’ package lists. This process will be slow if there are not enough RAM, and you will put more stress on your swap ( aka SSD/HDD ). I personally never gives it less than 1G.