Что означает listener-class в web.xml и какую роль играет contextConfigLocation?
И лисенер, и диспетчер поднимают ApplicationContext. Сначала поднимает лисенер, далее диспатчер поднимает дочерний контекст. Таким образом в бинах, подгружаемых диспатчером, можно делать референсы на бины, загружаемые лисенером. 
Главный вопрос - зачем?
Для секьюрити. В лисенере прописывается спринг секьюрити конфигурация, а в диспатчере бины из spring mvc. Т.о. бины из приложения могут использовать бины для секьюрити, но не наоборот. 
Подробнее можно почитать в какой-нибудь книге по спринг секьюрити, например Spring Security 3.1.
Само название listener, как бы намекает, что это некий слушатель. Т.е. он предназначен, чтобы слушать некие события. У Spring есть своя реализация событийной модели, на сколько я помню. По поводу конфига, да Вы можете его не указывать, но чтоб не насиловать classpath при старте приложения можно напрямую указать файл конфигурации. Т.е. это просто набор таких правил, при следовании которым, Вам гарантируется корректный старт и работа приложения.