Multiple intances of HttpAppliction objects are created and pooled to process the requests.in the lifecycle of an asp.net application. yes Application_Start will be called only once.
refer http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycle
excerpt: Once all the core ASP.NET objects are created, ‘HttpApplication’ object is created to serve the request. In case you have a ‘global.asax’ file in your system, then the object of the ‘global.asax’ file will be created. Please note global.asax file inherits from ‘HttpApplication’ class. Note: The first time an ASP.NET page is attached to an application, a new instance of ‘HttpApplication’ is created. Said and done to maximize performance, HttpApplication instances might be reused for multiple requests.