If you just want the simplest thing, do one room for the menu and one room for the game.
The menu options are objects with click events - this is the most flexible for GM since it lets them animate and react to input easily. If you want keyboard control the easiest thing is to maintain a counter variable for the selection cursor and use a separate if-then for the keyboard events - then move a cursor object to the position of the various option objects as the value changes. To do both keys and mouse is a little tricky but hardly impossible - you just have to decide how to reconcile mouse movements with the keyboard cursor(they could ignore each other, or the keyboard counter could change with mouse hover events). There isn't really any beautiful solution for menu UI, it just takes a lot of polish work.
For the game, I'm guessing that you just want a game flow of menu->game start->game over->menu. Just make the game room non-persistent and set all the game variables on entry - then GM's room transitions will do the rest for you.
If you want to be really fancy you might want an in-game menu. This requires being able to pause the gameplay at arbitrary moments, which is tricky since GM doesn't let you choose which things in the room have events. The best way I found to pause part of the game arbitrarily in GM, when I used it years ago, was to take a screenshot of the room, turn on persistence, go to a different room, draw the screenshot, and then run my menu/dialogue/etc. on top of the screenshot.
Thanks for the answer

I've managed create my main menu and game over screens with 1 controller and 1 room per game "state".
Thanks for the help, Triplefox

Now I just gotta figure out writing a highscore list to a file with ds_list
