http://en.wikipedia.org/wiki/Finite-state_machine^Does wonders.
As Niek said; having a bunch of variables for each action (IE "jumping = true", "falling = true") is not right for a finite state machine. The idea is that it gives you a level of control when your object's state is defined in a single variable. Being able to define *which new state* your object can go to from the state it's in rules out a lot of errors down the road. If you have a variable for each state however, you'll run into issues where you have a list of "state variables" set to true, and no indication of the source. You would be looking at a jumbled mess with no clue how you ran into the problem

One issue people have typically with platformers is that they don't realize that you don't want to *constantly* apply gravity. It's only needed for certain states (jumping, falling, etc). Something to consider as well, because it'll make your movement wonky and your objects will constantly try to compensate for their vertical position.
If I had to relate a finite state to Gamemaker, I'd say it's like having an entirely different set of code to run as a 'step' event per state. Easy stuff once you start getting into it, and it makes your life much easier