Pros:
- Applications are isolated from each other, unless IIS goes with it, an app pool locking will only take out applications in that pool
- Ability to run applications under different ASP.NET runtimes, one pool for 1.1 another for 2.0 if needed
- Ability to have different app pool settings for more or less critical applications. For example a corporate website in ASP.NET might want to have the shut down after __ minutes of inactivity bumped up, to prevent unloading because response is critical. Other sites might not need it.
- Can secure pools from each other in regards to file access, great for third party, or untrusted applications as they can run under a very restrictive user account.
Cons:
- Each application pool has its own bank of memory and its own process, therefore CAN use more resources
- Some find it hard to debug the application as you have multiple processes