Jophiel, For problem 1, I would create a new frame to the block's animation which is a red version. Have the animation set to not play from the offset. When spawning the block, do block.setframe(round(random(1))). That will make half of the blocks blue and half of them red. Then add a block.oncollision(player) & system.comparevalues(block.animationframe = 1). Add the action: system.restartlayout.
For problem 2, you can use the variable 'time'. This is a number which represents how many seconds have passed since the game started. If you start straight into the game, then you can just use the variable. If you have menus etc, you will need to store the 'time' at the point the game starts, and then the time for the game is just time-gamestarttime. Then to make more blocks spawn over time, set the upper limit of the for loop to say, random(0,3)*floor(1 + time/25) So every 25 seconds the number of blocks spawned will have a larger probability to be more. To decrease the time between block spawns, the current method you are using is 'every x seconds' -> spawn some blocks. You have used x as a constant so blocks spawn at constant intervals. If you want to make it go faster over time, then you need to make x smaller over time. This could be achieved by having x = initialtime - time/10, so this way, every second the time taken for the blocks to spawn decreases by 0.1 of a second.