[eluser]apodner[/eluser]
I would recommend you benchmark and test as much as possible. As far as learning to make extensions as efficient as possible, I think you are already on the right track...stay involved in the community, bounce ideas around, and work your code down to what you truly need to get the job done.
If you are new to OO concepts, then read about things like
Single Responsibility Principle
Separation of Concerns
Decoupling
Design Patterns (e.g. MVC which is what CI is)
It is a big subject and it keeps getting bigger. I never thought of it as something that I would know, it was always something that I would just keep learning about.