Dagger 2 is a dependency injection framework created by Google to address issues with previous solutions like Dagger 1. It aims to generate object graphs at compile time instead of using reflection at runtime, making the code faster and allowing errors to be detected earlier. It uses annotations like @Inject, @Module and @Component to identify dependencies and generate implementation code. If any dependencies cannot be satisfied, it fails to compile rather than causing runtime errors. The documentation recommends proceeding with caution as Dagger 2 is still in pre-alpha stage.