Lost on how to control multiple led strips with MEGA

Try this:

void doEffects( void )
{
    static uint8_t
        stripIdx = 0,
        stateEffects = 0;

    switch ( stateEffects )
    {
        case    0:
            //stay in state 0 doing the meteor effect...
            meteorRain( stripIdx, CRGB::Black, CRGB::White, 10, 175, true, 25 );
            stripIdx++;
            
            //until all strips are done...
            if ( stripIdx == NUM_STRIPS )
            {
                stripIdx = 0;           
                stateEffects++;    //then bump to the next state
                
            }//if
        
        break;

        case    1:
            stripFillEffect( stripIdx, CRGB::Green, 25ul );
            stripFillEffect( stripIdx+1, CRGB::Green, 25ul );
            stripFillEffect( stripIdx+2, CRGB::Green, 25ul );

            stripIdx += 3;            
            if( stripIdx == NUM_STRIPS )
            {
                stripIdx = 0;            
                stateEffects++;
                
            }//if
        
        break;

        case    2:
            stripFillEffect( stripIdx, CRGB::Black, 25ul );
            stripFillEffect( stripIdx+1, CRGB::Black, 25ul );
            stripFillEffect( stripIdx+2, CRGB::Black, 25ul );

            stripIdx += 3;
            if( stripIdx == NUM_STRIPS )
                stateEffects++;
                
      break;

        case    3:
            stripFillEffect( stripIdx-1, CRGB::Green, 25ul );
            stripFillEffect( stripIdx-2, CRGB::Green, 25ul );
            stripFillEffect( stripIdx-3, CRGB::Green, 25ul );

            stripIdx -= 3;
            if( stripIdx == 0 )
            {
                stripIdx = NUM_STRIPS;            
                stateEffects++;
                
            }//if
        
        break;


        case    4:
            stripFillEffect( stripIdx-1, CRGB::Black, 25ul );
            stripFillEffect( stripIdx-2, CRGB::Black, 25ul );
            stripFillEffect( stripIdx-3, CRGB::Black, 25ul );

            stripIdx -= 3;
            if( stripIdx == 0 )
                stateEffects++;

        break;


        case    5:
            for ( stripIdx = 0; stripIdx < NUM_STRIPS; stripIdx += 3 )
            {        
                fill_solid( grLeds[stripIdx], NUM_LEDS_PER_STRIP, CRGB::White );
                stripControl[stripIdx]->showLeds(gBrightness);
                fill_solid( grLeds[stripIdx + 1], NUM_LEDS_PER_STRIP, CRGB::White );
                stripControl[stripIdx + 1]->showLeds(gBrightness);
                fill_solid( grLeds[stripIdx + 2], NUM_LEDS_PER_STRIP, CRGB::White );
                stripControl[stripIdx + 2]->showLeds(gBrightness);
            
            }//for
            
            //move to the next effect or done
            stateEffects++;
        
        break;

        default:
            //done effects; do nothing
        break;

    }//switch

}//doEffects

void stripFillEffect( uint8_t stripNo, CRGB color, uint32_t timeDelay )
{
    fill_solid( grLeds[stripNo], NUM_LEDS_PER_STRIP, color );
    stripControl[stripNo]->showLeds(gBrightness);
    delay( timeDelay );
    
}//stripFillEffect

As you settle on whatever effects you want you might think about the patterns and statements that are common to all and see if there's a way to approach them differently; instead of having discrete states for each effect that are very close to one another, maybe have a function that does that and pass the start and end color, the direction of movement etc.