You don't mention which IDE version you are currently using, but, .ino files are concatenated prior to being compiled. First will come the file that has the same name as the project folder. After that are added all the other .ino files in alphabetical order. You can determine in which order the files are added by using an alphabetical naming scheme.
You can avoid the ordering problem entirely by using .h and .c or preferably .cpp file pairs for your additional files. Suppose you had a group of functions, you would put them into a pair of files called myfunctions.h and myfunctions.cpp. There are rules regarding how these files are structured and we are getting into the realms of C/C++ here, but this is not difficult. The .h file is called a header and contains your function declarations and also requires something called an "include guard" which looks like this at the top of the .h file:
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H
You then have your global (external) variable and function declarations.
At the bottom off the .h file you also must have:
#endif // MYFUNCTIONS_H
Not that the part after the '//' is a comment and not mandatory, but it does help to identify the #if statement that it is paired with.
At the top of myfunctions.cpp you will have:
#include Arduino.h
#include myfunctions.h
Your variable definitions and code then follow.
In C/C++ a variable or function has to be declared before it can be used and as we can see, such declarations would be placed in header the (.h) file. The .c or .cpp file would contain the variable and function definitions (i.e. the working code). The compiler "knows" about the functions because it looks at the declarations in the .h file which is included in every file where those functions are used. Your corresponding .cpp will include the .h file and most likely so will your main sketch .ino file. You include with a simple statement:
#include "myfunctions.h"
Note the double-quotes rather than the <> characters. This signals to the compiler to look for the file in your project directory rather than the Arduino libraries. You add .h and .cpp files to the project using tabs in IDE as you have been doing, just give them the appropriate extension when you name them.
With .ino files, Arduino IDE tries to make things easier so usually no forward declarations are necessary. This is fine until you start using multiple .ino files as you are doing. There is nothing to stop you putting forward declarations of the global variables and functions used in the secondary .ino file in the declaration section at the beginning of the primary .ino, i.e. before void setup(). A forward declaration of a function consists of the function statement only, so say you have some function in file2.ino:
void myFunction(int foo){
some code here
}
Your forward declaration in the primary .ino would simply look like:
void myFunction(int foo);
That way when the compiler encounters a reference to a function or global variable before the appropriate .ino file containing it is loaded, it already "knows" about it as it has a reference to it and will link to the working code at some point in the process without throwing an error. However if you have a lot of .ino files, this can get messy very quickly so for complex projects, using .h and .cpp files is recommended.