For beginning structures, and if you're comfortable with java/spring, jhipster sets up working angular apps (consuming web service backends) with what they believe are best practices.
The Ionic framework is not a good source base to look at for regular apps.
I'm a huge fan of the Ionic framework, but it's sourcecode is a mess and even the good parts are usually complex implementations of things you would definitely not be doing (such as keeping view state live, overriding default elements etc...)
Overriding default elements and managing view state both seem pretty common in non-trivial applications.
Overriding default elements isn't very common, I think. Most apps just need to style elements not provide different functionality (which can usually be gained by simply creating a new directive).
In regards to managing view states, then yes it's very common,but you don't usually write those yourself, you use things like Ionic (or ui-router).
Related - I'm working on learning better Angular for my new job, where we're using it heavily. I'm a little surprised how few open-source projects using it are out there, considering how popular it seems to be. Does anybody have any idea why? It is mostly popular for internal corporate apps or something?
Such is often the case with apps that actually need to and/or get released.