Ok, to somewhat simplify the question of whether to use a tool (GMS, Contruct, Unity, etc) or a standard language + some API (think something like C++ and DirectX), one could say tools trade freedom (as in features available, and things like that) for simplicity of use.
You don't need to use C++ or C# and OpenGL/DirectX to be a "real" developer.
It is irrelevant what tool/language/API you use, as long as it works for you.
The main advantage of those tools, is that you focus mainly on the game creation part, instead of having to write code for every little thing your game does (like you would, if you use C++, for example).
The trade here is that the tool constraints what you can do (compared to, again, a language+API), but in turn allows to create stuff much faster and easier.
Oh, and what i meant for game design/architecture, is the game itself is composed (things like objects, how to do collision detection, impementing enemy AI, how to move your characters), and not code architecture.
Basically, this game developing knowledge will stay with you, even if you move to another language, because, although, you'd obviously have to learn the language and how to implement these things in that language, you'd already know how the game elements work together and how to make the game working.
This is knowledge that remains relevant regardless of whatever language or platform you use (like Looniper said, similar to cross-platform development).
There's one thing you could think about among those tools, and that is the basic language they use.
I mean, Unity uses C#, Flash uses AS3, Contruct 2 HTML5, so you could choose one that you think would be more useful in the future, although i must reiterate myself, and say that this is secondary to the experience you'll gain in the game design.
As a side note, although i mentioned Multimedia Fusion earlier, this is one i'd recommend not using, considering the alternatives.
This advice comes not from experience, but from the developer of the infamous I Wanna Be The Guy, who says he regrets using it.
As for Flash, from the tools mentioned, it's the only one i've used, and it's pretty awesome.
ActionScript3 is similar, in sintax, to C++/Java, which made it easier for me to get into, because i was already familiar with C++.
I can't say whether it is easy or hard to learn, but i think it wouldn't be much different from the other tools.
Another good point though, is that, pretty much like GameMaker, Flash has been around for a long time, so there are a lot of tutorials for it. Just make sure to search for ActionScript 3 tutorials, if you choose to use Flash, because AS2 is deprecated.
As a last note (and the fact that it is a SHMUP is a coincidence) here's a great game made in GameMaker, that i happen to discover recently.
It's like mix of Konami's Gradius and Irem's R-Type. You can find it here.
I just mention it here, so you can have an idea of what can be done with GameMaker.
Well, that's about it. I hope this is more comprehensive.