1)При следующем обращении (переходу на другую страницу сайта) идет ли обращение снова к DNS или взаимодействие уже идет на прямую с Веб сервером/Сервером приложения?
Вы путаете сервер-клиент приложение и работу DNS службы. К серверу можно изначально обращаться по IP адресу, к серверу можно обращаться и вообще не по IP сетям. Что же касается работы DNS, то работает оно сложнее.
Ваш комп смотрит файл hosts, если там нет нужного сайта, оно смотрит на локальный кеш, в котором хранятся недавние обращения. Если нет и там, обращается к вашему DNS серверу. Тот смотрит в свой кеш, если в нем нет - обращается к вышестоящему DNS серверу, и так до рут-сервера. По пути, каждый DNS сервер может иметь свой кеш. В среднем закешированное значение хранится сутки, но каждый владелец домена может настроить свой TTL (time to live). Кроме того, существуют dns балансеры, когда на тот же DNS могут возвращаться разные IP.
2) Веб сервер соответственно работает как сервер для веб (http), сервер приложений соответственно работает для приложений (например он запускает java сервлет, к которому можно обращаться различными способами, включая http)
3) в цепочке "клиент - вебсервер - сервер приложения" может отсутствовать второй или третий пункт. То есть может быть клиент-вебсервер или клиент-серверприложения. Вообще правильно говорить клиент-сервер. А какой именно клиент и сервер, и как они общаются - это уже вторично.
4) Вы путаете работу клиент-серверной части и непосредственно работу сетевых протоколов. Не мешайте сюда DNS, это работает прозрачно для вашего клиента и сервера.
Не мешайте сюда базу данных, можно работать даже без нее.
Если вы нажимаете "положить в корзину", то клиент отправляет команду, сервер ее обрабатывает и отвечает клиенту каким-либо способом, понятным клиенту. Что делает сервер - кладет в базу, или не кладет - это зависит от реализации корзины.
Понятно, что все команды которые отдает клиент серверу и все ответы, которые дает сервер клиенту, должны быть понятны и серверу и клиенту. Именно поэтому оно и работает.