I didn't realize you were using GLUT. I really cannot comment on using this for games but GLUT is event driven from what I know which is fine for making simple applications, not games beyond something like chess, or blackjack.
I believe glutTimerFunc() is what is controlling your update rate. So glutTimerFunc(1000 / FPS(30), Loop, 0) = update every 33.33333 milliseconds.
I wont be able to comment further on GLUT as I don't use it. It's also a depreciated library which really shouldn't be used for 2D game development in this day and age considering libraries like SDL2 and SFML can easily generate window creation for you with greater benefits.
What you should be doing is using something like SDL2 or SFML to generate your window, you'll also benefit from events, keyboard input, mouse input, sprite classes, texture classes, audio, networking, ect... then create a proper time step and game loop from scratch, and use openGL from there without GLUT.
Continuing on this path is just going to be an on going headache as you've stated before you wanted to make a space invader style game.
You can look at these for an example on time steps and a basic game loop:
https://gafferongames.com/post/fix_your_timestep/
http://www.koonsolo.com/news/dewitters-gameloop/
If you still want to keep using GLUT then you'll need to get someone who uses GLUT to help regulate your loop better.