Color Fading Mode Switching

Could you please go into a bit more detail on how to rework buttonCheck()?

Sure.

  void buttoncheck()
  {
    for(int x=0; x<5; x++) //loop for checking all the buttons
    {
      buttonstate = digitalRead(button[x]);
      if(buttonstate == HIGH && button[x] == 3) //number equals the buttoon the pin is connected too
      {
        mode = 1; // number equals the mode you want to run
      }
      if(buttonstate == HIGH && button[x] == 4)
      {
        mode = 2;
      }
      if(buttonstate == HIGH && button[x] == 5)
      {
        mode = 3;
      }
      if(buttonstate == HIGH && button[x] == 6)
      {
        mode = 4;
      }
      if(buttonstate == HIGH && button[x] == 7)
      {
        mode = 5;
      }
    }
  }

should be, in my opinion:

 int buttonCheck()
{
   int whichWasPressed = -1;
   for(int x=0; x<5; x++) //loop for checking all the buttons
   {
      int buttonstate = digitalRead(button[x]);
      if(buttonstate == HIGH)
      {
          whichWasPressed = x;
      }
   }
   return whichWasPressed;
}

The only global variable needed is the array of pin numbers. What is returned is the index into the array that corresponds to the switch that was pressed, or -1 if no switch was pressed.

Which switch was pressed affects mode, but NOT in buttonCheck() (notice that I changed its name to camelCase).

In loop(), then, use:

int mode = buttonCheck();

Again. mode does not need to be global. It is used only in loop().

Then, in mode1(), for instance, you can use:

  void mode1() //RGB FADE
  {
    crossFade(red);
    if(buttonCheck() > 0) return;

    crossFade(orange);
    if(buttonCheck() > 0) return;

    // etc.

The time between calling buttonCheck() in the modeN() functions and calling it again in loop() will be pretty short, so it should return the same value from both calls.

If not, you'd need to make modeN() return the value that buttonCheck() returns, and rework how loop() works. But, test it with these changes (in all modeN() functions, first.