How do I set up multiple interrupt cycle timers to control separate relays.

The time values should be stored in unsigned long variables, not long variables.

You only need one variable to hold currentMillis.

Any time you find yourself numbering similar variables to tell them apart, you should consider whether you should be using arrays. The answer in this case is yes. With the time values held in arrays, you can use a single for loop to apply the same log to each pin.

You code layout is unconventional and IMO not very clear. It would be better if you get into the habit of always using a { and } compound statement after each conditional expression (even when there is only one statement in the block), always put each { and } on separate lines with matching pairs indented by the same amount and the lines between the indented one extra level. If you get the code on the right lines, the tools/autoformat option will sort out the indentation for you.

At the moment you are using the same value for the on duration and off duration for each pin. You said that you want different on and off times. In that case you will need to hold these separately and use the appropriate value according to the current pin state when you are checking the timer.

I don't know how accurately you expect to maintain sync over a minute or how much it's slipping by, but there is a slight change to the timing code which will eliminate one cause of slip. Replace:

previousMillis1 = currentMillis;

with

previousMillis1 += interval1;

(Of course you will also want to change this code to use arrays instead of numbered variables.)