I know how it is to be a game dev on a deadline and have ideas of how to expand on a project, how it can be fixed or added to, etc. So please understand if I mention things you already want to fix or add.
0) The alternate skin from walking to the left on the first screen is a nice touch
1) From the tutorial, it seems like the player's exact location ends in relation to the block you hook, but it can vary. You can either end up on the side of it, or buried inside it entirely. I wonder if would help to change the collision code to have the player look for blocks a step ahead of their movement (something like "var inst = instance_place(x+x_movement,y+y_movement, obj_block; if instance_exists(inst) then..." and move the player as close to the centre of the block as possible without overlapping, then stop the horizontal movement)
1a) Hooking a block above you and breaking it with the jump button, to be able to pass through the gap you made, is a great idea. However the player often isn't aligned close to the centre of the block, and will bump their head on a block adjacent to the one that was destroyed instead. It would be a good idea to lerp the player's x position to the block's x position, or y for y position
2) You already have varying jump heights and a good walljump that allows for neutral jumps to bounce away from the wall, the general plaforming movement feels nice. I didn't have any issue with the keyboard controls, but that's because I'm right-handed and used to playing games with Z, X, C etc binded to controls
2a) Would being able to throw the hook diagonally (walking forward and holding up while hitting Z) break the level design?
2b) Not being killed instantly by the ceiling of the room is a nice concession to the player
3) A pause state might seem counterproductive to a game with a time limit, but it would help if the player is caught unawares by IRL matters or wants to take notes on the controls and features
4) I'm not sure of the reason behind it, but occasionally the floating heart's hitbox seems to change and make it impossible to collect unless you approach it from the right side. The graphic itself normally represents the area you need to overlap to collect it, but in these cases it isn't affected that way
5) I was hit by a fishbowl enemy while trying to hook through two rows of blocks below where I was standing. I believe I tried to mash the hook button, and then the game crashed. The hook graphic was visible but the chain and the player weren't (probably due to the temp invincibility).
FATAL ERROR in action number 1 of Step Event0 for object obj_aGrabber:
Unable to find any instance for object index '106872' name '<undefined>' at gml_Object_obj_aGrabber_Step_0
stack frame is
gml_Object_obj_aGrabber_Step_0 (line -1)
Overall though it's been a fun experience and it's a good start for a game. It sounds like you already have a bunch of ideas for keeping future gameplay loops fresh, but I'll make some suggestions anyways. Penalty icons that handicap the player (inability to jump, extra enemies spawn in, ice terrain, spikes appearing, etc etc) in exchange for a points multiplier. A 'custom settings' option on the pre-game screen that allows the player to change some settings (toggling some penalties to last the whole game or rarely/never appear, reducing/increasing the speed of moving walls, reducing/increasing enemy rate, removing "!" icons, etc) that will in turn add onto or remove from the base points total the player earns through the next game. A competitive co-operative multiplayer where the players can sabotage each other to keep the highest points total before the clock runs down.