In IIS Manager, an application pool has checkbox for "Start application pool immediately" in the basic setting dialog, and an advanced setting called "Start Mode" which can be set to "OnDemand" or "AlwaysRunning".
What is the difference between these settings?
Had the same question as the original poster but could not find a concise answer, below is the analysis from my research.
Application Pool != Worker Process (w3wp.exe)
Web gardens... are they good or bad or what?
Start application pool immediately = Automatic or manual start
Basic Settings...
IIS will automatically start the application pool.
Someone needs to manually start the application pool.
Start Mode = Worker process start mode: immediately or on demand
Advance Settings...
If the application pool is running immediately start up the w3wp.exe process.
If the application pool is running start the w3wp.exe process when there is an inbound application request.
Additional Notes
Stop IIS, application pool(s) and worker process(es) (w3wp.exe instances).
IISRESET /start
Start IIS and the above configuration settings will determine when the application pool(s) and worker process(es) (w3wp.exe) start up.
IIS Manager Stop Web Server GUI action
Stop the web server from handling inbound requests but will not stop the application pool(s) or w3wp.exe process(es).
IIS Manager Start Web Server GUI action
Start the web server to handle inbound requests but will not start the application pool(s) or w3wp.exe process(es).
Menu action to start/stop a Web Server
IIS Manager Stop Application Pool GUI action
Stop the w3wp.exe process.
AlwaysRunning vs. OnDemand will determined when the w3wp.exe process starts up.
Menu action to start/stop an Application Pool
It looks like "Start application pool immediately" controls whether the application pool is "Started" when the World Wide Web Publishing service is started. But a "started" application pool is not necessarily running (meaning there may not be a w3wp process).
If an app pool is not "started" then you will get a 503 when you hit a site that uses that app pool.
If an app pool is "started" then a w3wp process will service your request. "Always Running" means that when the application pool is started a w3wp process starts. OnDemand means the w3wp process spins up when you first hit a website that is associated with the application (there is a delay while the w3wp starts).
Bit late to respond but I will add my findings as I looked around to find asnwer to this same question.
"OnDemand": IIS will launch worker process when first request for Web application is received. "AlwaysRunning": IIS Launches the worker process for the application pool as soon as IIS is started OR when application pool is created.
Per IIS 8 What’s new – Application pool settings: