PaulS:
I believe all 3 go hand in hand
Not entirely. The compiler is pretty darn good at optimizing code, to make the Arduino's job easier. What it can't do anything about, though, is redundant code, as you have. Redundant code may be quick to create, but it is not easy to maintain.
The compiler runs once; the compiled code may run once, a dozen times, or millions of times. Writing code that makes the compilers job easy ought not really be a concern. You need to focus, for now, on making code that is understandable and maintainable. Limiting scope and creating atomic functions (As Major Charles Emerson Winchester was fond of saying "I do one thing at a time, and I do that very well"). Here, you have an opportunity to learn to do both.
When you say 'not easy to maintain', you mean not easily optimized, changed, upgraded, etc...?
Just looked up the definition of scope (computer science), and I feel mind numbingly dumb atm lol
I will have to read up some more on it. Seems to be a lot about variables..
Also, when you say atomic functions, this is when you can complete a function in one clock cycle, without any interruptions or unnecessary rendundancies?