Ответ 1
Классический пример использования - это когда у вас есть несколько Spring DispatcherServlet
внутри одного веб-приложения, причем каждый из этих сервлетов имеет свой собственный контекст приложения, но для этого необходимо разделить между ними beans. В этом случае вы добавляете третий контекст на уровне webapp, который является родительским элементом каждого из контекстов приложения сервлета.
Вы можете продолжить этот шаблон, например, если у вас есть несколько webapps, входящих в единый JavaEE EAR. Здесь EAR может иметь свой собственный контекст, который является родителем отдельных контекстов webapp, который является родителем контекстов сервлета и так далее. У вас есть эта иерархия ответственности.
В других ситуациях структура контекста продиктована каким-то другим фактором. Например, Spring Безопасность не зависит от Spring MVC и требует, чтобы ее конфигурация beans проходила в контексте webapp. Если вы хотите использовать с ним Spring MVC, то config для этого должен перейти в контекст сервлета, который имеет корневой контекст webapp в качестве родителя.