Well, you misunderstood, and now you're ranting according to your misunderstanding.
I'm not an Angular, expert, but I'm pretty sure that the situation is this:
1. "Hello world" does not require any dependency injection whatsoever. (ie. it does not require services, providers, or factories). Note: if this was not true, I would agree with this rant completely.
2. If and when you decide you want dependency injection, if what you want to inject is a simple value, you can just provide it directly, without using a service, provider, or factory.
3. If and when you decide that you want to provide a dynamically-generated value, you can specify a function instead which will get called whenever the value is requested. This is called a "factory."
4. If and when you decide that you want your factory to just "new" an object instead of running an arbitrary function to provide the value, you can register that object type as a "service."
5. If and when you decide that you want to configure that object type first, you can register it as a provider.
If you want to stay at step 1 forever to keep things simple, groovy.
This is a example of success, not failure: you pay for only as much complexity as you actually want to use.