If you want to write neat code, you can start by not using global variables if they don't need to be global 
Your previousMillis1 and previousMillis2 are specific to manageNeon1() and manageNeon2(). So they need to be declared in those functions. The same applies to currentInterval1 and currentInterval2
void manageNeon1() {
static unsigned long previousMillis = 0;
static byte currentInterval = 0;
if (currentMillis - previousMillis >= Neon1intervals[currentInterval]) //if the time interval has elapsed
{
currentInterval = currentInterval + 1; // select the next interval in the list
if (currentInterval >= NUM_OF_1_INTERVALS)
currentInterval = 0;
Neon1State = (Neon1State == HIGH) ? LOW : HIGH;
digitalWrite(Neon1Pin, Neon1State); //change state of the LED
previousMillis = currentMillis; //save the time of change
}
}
OK, so much for that. I hope you're up for the below 
Next you need to start thinking a little object oriented. You started this thread with 'on' times and 'off' times. You wanted to switch a led ON for a certain duration and next switch it OFF for a certain duration. I'm not much of a C++ programmer so will not use a class for this but will stick to a so-called structures.
Instead of using an array of 'on' times and an array with 'off' times, combined them in a structure. The structure allows you to combine multiple variables into one variable.
/*
structure to hold timing information (ontime and offtime)
*/
struct TIMING
{
// time that we want the LED to be ON
unsigned long ontime;
// time that we want the LED to be OFF
unsigned long offtime;
};
Next you can define arrays for the timings for each led. I've used a RGB led and so there are only three sets of timings.
/*
LED timing
*/
TIMING timingRed[] = {{1800, 1800}, {1000, 1000}}; // red led: on 1800 / off 1800, on 1000 / off 1000
TIMING timingGreen[] = {{1200, 1800}, {750, 1750}, {1000, 1000}};
TIMING timingBlue[] = {{2500, 1500}};
If you have the same timing for all leds, you can simply define one array.
Next you can think about an individual led. How does it compose? A pin that it is connected to and it has one or more timings. You also need to keep track which timing is currently selected. That brings the following struct.
/*
structure to hold information for a LED
*/
struct LED
{
// pin number of LED
int pin;
// timings for the LED
TIMING *timings;
// number of timings
int numtimings;
// current timing
int currenttiming;
// start time when LED is switched ON or OFF
unsigned long starttime;
};
There are a few other variables; one to keep track of the number of timings and one to keep track of the start time of a delay.
You can now declare an array of LEDs using the above struct. Again. as there are three leds, the array contains three elements.
/*
LED declaration
*/
LED leds[] = {
// RED: pin 9, timings, number of timings, current timing 0, start time 0
{ 9, timingRed, sizeof(timingRed) / sizeof(TIMING), 0, 0},
// GREEN: pin 10, timings, number of timings, current timing 0, start time 0
{ 10, timingGreen, sizeof(timingGreen) / sizeof(TIMING), 0, 0},
// BLUE: pin 11, timings, number of timings, current timing 0, start time 0
{ 11, timingBlue, sizeof(timingBlue) / sizeof(TIMING), 0, 0},
};
Last thing is to write a function that does the processing of one of the leds using an index; the below is a simple demo to show how to access the variables inside the struct.
void manageLed(int ledIndex)
{
Serial.print(F("ledIndex: "));
Serial.println(ledIndex);
Serial.print(F("pin: "));
Serial.println(leds[ledIndex].pin);
Serial.print(F("number of defined timings: "));
Serial.println(leds[ledIndex].numtimings);
for (int cnt = 0; cnt < leds[ledIndex].numtimings; cnt++)
{
Serial.print(F("\ttiming #: "));
Serial.println(cnt);
Serial.print(F("\tontime: "));
Serial.println(leds[ledIndex].timings[cnt].ontime);
Serial.print(F("\tofftime: "));
Serial.println(leds[ledIndex].timings[cnt].offtime);
}
Serial.print(F("currently selected timing: "));
Serial.println(leds[ledIndex].currenttiming);
Serial.print(F("starttime: "));
Serial.println(leds[ledIndex].starttime);
}
And the last piece is how to loop through the LEDs and call the function; I've placed it in setup (as it's just a demo).
// sensible names for ON and OFF; swap around if LOW defines ON
#define ON HIGH
#define OFF LOW
void setup()
{
// serial for debugging
Serial.begin(9600);
//loop through leds
for (int cnt = 0; cnt < sizeof(leds) / sizeof(LED); cnt++)
{
// set LED pins as output
pinMode(leds[cnt].pin, OUTPUT);
// switch leds ON
digitalWrite(leds[cnt].pin, ON);
// display
manageLed(cnt);
}
}