Do an internet search for “arduino i2c pwm” for several options depending on how many light circuits you want to control. I2C interface will probably be the easiest to work with for controlling the PWM board. If you can find a board for which there are already built-in nodes in XOD or XOD library, your program will be that much easier to write (like bradzilla84/i2c-pwm-servo-16ch — XOD). PWM board probably won’t be able to handle 2A, so you will need to use a transistor or MOSFET with PWM output controlling power level (or use motor controllers to drive each circuit, but that would be over-kill since you probably wouldn’t use reverse).
Note that you will not be able to use a simple flip-flop to store state if you want to be able to dim the lights. Unless the PWM board gives you a way to read current values, you will need to store those values in your code (probably using a buffer node). You might still want to keep flip-flop if you want to remember previous brightness while circuit is off.
There are other discussions on this forum for code to allow button-hold to increment values continuously or quick press to increment by one. You could use similar code to use button press to turn lights on/off or button hold to dim/brighten lights. You could just use one POT for each light circuit, but you would have to walk over to the POT, not have a POT next to each switch. Another option would be to use a rotary encoder for dimmer; maybe assume you want to bright/dim the last circuit turned on/off (but that requires code to remember which circuit you are changing). Trying to allow dimmer for switches controlling groups of circuits is doable, but it will be more complicated (for example, what is your starting value if all circuits do not start with same value; do you change each circuit separately, or force them all to same value?).
Lots of options. I would suggest writing the code that lets you set your light levels that just has watch nodes to see values, then figure out how to push those values to the PWM control board and drive your lights from it. If you try to do everything at once, you will probably be over-whelmed. If you break it into smaller chunks, you can see progress as you build each piece.