An application domain gives the .NET Framework a way of isolating applications that are running in the same process.
For example when you are running multiple add-ins in the same application.
If one of them needs to be reloaded you don't want the other add-ins to be affected.
Loading the add-ins into separate application domains guarantees this isolation.
You can also set security permissions on an application domain.
For example when an application domain is created for a VSTO solution, the runtime sets a policy for the application domain so that it does not trust the My Computer Zone
This practice ensures that the code in the My Computer Zone has been granted trust explicitly rather than allowing all code to run by default.