"if requested" means "if manually injected", i.e. the object is created by you or some framework (think Android and Activities objects) and then you call 'DaggerMyComponent.inject(myObject);'.
On the other hand, when you provide @Inject annotated constructor Dagger will be able to instantiate objects of this class itself so your class may be in the middle of the dependency graph and object will be automatically be created for you by Dagger.
Usually in Android you inject manually only objects that are created/destroyed for you by android (i.e. you don't control their lifecycle) like Application, Activities, Services, etc.
Also you don't have to worry if you accidentally miss the @Inject
annotation on some class' constructor. If your class is the middle of the graph Dagger will catch that there are dependencies that are not satisfied and will fail the compilation with appropriate error.