Ah 
The observer pattern is the official name of the ‘sending events’ thing that Corona has - you listen for an event, and it sends a message, and you react to that event.
(The problem with doing this is that the thing sending the message has to know about the thing it is sending a message to, and if you don’t forget this (removeEventListener) then there is still a reference there - so it may not ‘clear up’ the memory)
What I would suggest is two things - one write some code in lua (or anything) outside Corona SDK, so you are comfortable with tables and so on. Corona is event driven , when you are new to programming it is much easier to learn skills without events.
Secondly is don’t try anything too complicated if you are a newbie - go for something simple - just Pong, or Breakout, something with one basic screen, before trying anything too serious. I’ve been coding for near on 40 years, but we all start with Print “Hello World” or something similar.
Structure and organisation is important - for simple things it doesn’t matter, but anything complicated can end up with umpteen interconnected bits of code. Try and break things up into separate bits. Try to make your functions do one thing or one closely knit group of things and do them well.
Once you’ve done this you will get a feel on how to engineer more complicated projects. Good luck 