My question is are statements inside a 'when' (under case statement) concurrent? i.e. in the image below (shown in red) if I change the order as follows, will the functionality still be the same?
As long as the reset value of the state register (which you effectively abstract when using the enumerated type) remains the same - the order doesn't matter.
As long as the reset value of the state register (which you effectively abstract when using the enumerated type) remains the same - the order doesn't matter.
The problem here can be an question about the differences between signals and variables.
If everything was a signal, then the order of the assignments is unlikely to make any differences.
But with variables, because they are assigned immediately, changing the code order can significantly affect behaviour.
To the OP: I suggest you stick ONLY with signals for now - variables can cause issues due to code order dependencies.