There are angular specific minifiers dealing just fine with #3. It's more of a toolchain problem.
For #5 the real deal is the provider and everything else is syntactic sugar on top of it. Once you have a very large application you start to appreciate the distinction. The naming of concepts is awful though; could have been much more clearer.