Question: what is the difference between extending a component and component overlay?
Answer: Extending and overlaying involves copying the component from /libs/ (or other base library) to /apps node and changing the behaviour. Override is similar to extend but the only difference is that you change the sling:resourceSuperType of the component so that it's behaviour completely changes (hence overridden).