If get this from the Microsoft official documentation:
The Application_Start and Application_End methods are special methods that do not represent HttpApplication events. ASP.NET calls them once for the lifetime of the application domain, not for each HttpApplication instance.
I was sure that Application_Start was related to the HttpApplication, here this guy explains why I was wrong. Which object/entity is related to the Application_Start event?
As the documentation says, the events are linked to the lifetime of the application domain, which in practice means the app pool which the application is running in. Application_Start will fire again if the app pool is recycled for any reason - a change to web.config, for example.