It's not too challenging at all - just break it down and take it one item at a time.
- Make scene that is a single tile. (It doesn't need to do anything at this stage, just be a square.)
- On your main scene, make a grid container and a way to populate the grid container with instances of your tile scene
- Make your tile able to do all the things a tile should do (respond to user input, hold a 'revealed' / 'unrevealed' / 'marked' status and display that status, etc.)
- Make a function that's called when starting a new game that places bombs randomly on the grid (use an 2d array or nested dictionaries to hold this information)
- Make the tiles reference that array to determine their own status
- Make the tiles able to display the adjacent bomb count when revealed (if a bomb is a '1' in the array and a safe tile is a '0', this is as simple as summing the values of all tiles in a 3x3 area centered on the one clicked)
- etc.