Both are fairly easy. Do the first one with a variable. Start the variable at 0. On each switch check if the variable is at the right spot. If it is, advance it by 1. If it isn't reset it.
So, each event would look like this:
@>Conditional Branch: If Variable [X: Switches Pulled] == 0
@>Play SE: Correct
@>Variable [X: Switches Pulled] += 1
: Else
@>Play SE: False
@>Variable [X: Switches Pulled] = 0
: Branch END
The only thing that would change is what you check the variable against. The first in order should be 0, the second should be 1, the third should be 2, etc... When you get to the final switch, then instead of advancing the variable in the correct branch you would simply deactivate each of these events (by a switch, for example) and then simply play the successful version of this.
The second event is also fairly simple. If you're using RMXP or 2k3 you could use terrain tags and this system is very easy to do. If you're using RMVX, then it's a little different but not much harder. Tell me which maker you're using and I will go over the event.