The important thing to understand is a "game loop" - what happens & when per frame of the game running - usually broken down into "update" where you trap events such as key presses, and "draw" which is where you draw the next frame onto the screen with all your associated sprites.
Construct thankfully simplifies the concept for non-programmers, so in a nutshell you just have to know that the event sheet is looked at once per frame, events are read in order from top to bottom, and html5 games typically run at 40-60 frames per second.
If you want something to happen every frame, such as moving a sprite around, you'd use "every tick". If you only want something to run on a condition, then there's loads of different things you can do - me checking the sprite's frame is just one example of a condition.
Following the tutorial I linked should make you more than familiar with the above.
There isn't an opposing word for hard-coding, just know that it's frowned upon in the programming world.
In this case I could have hard-coded the number "2" on my max frame check, rather than "animationframecount-1". That would be typical hard-coding and would break if I added more frames to the animation.
As for what would happen if you try and set the animation to 3 and above.. try it yourself! Construct2 is a sandpit, grab your shovel. I suspect it would simply keep the previous/last known frame i.e. frame#2 as it doesn't understand the next instruction. In other programming languages which are more strict this would end up throwing an exception.