Если очень вкратце, то:
1) Собственно, сервер (свой или выделенный, физический или виртуальный). Вы на нем царь и Бог. Сами ставите удобную для вас ОС (Linux, Windows Server или что-то еще). Сами разворачиваете службу (IIS, Apache и пр.), которая будет отвечать на запросы пользователей(обычно по портам 80/443 http/https, если речь о WEB'е) . Если у вас одиночный сервер, то запиливаете сюда же и базу данных по своему вкусу. Конфигурируете это все, настраиваете брандмауэр и еще всякую фигню. Когда сервер работает - вы публикуете свои сайты/приложения в папки (физические и виртуальные) службы (IIS, Apache).
2) Хостинги. То же самое, что и пункт 1: только всю работу по настройке (выбор платформы, БД и пр.) берет на себя провайдер, а вам предоставляет доступ (обычно через WEB-интерфейс, FTP и SSH) ТОЛЬКО на закрепленную за вами папку в службе (IIS, Apache) и ТОЛЬКО к вашей схеме/каталогу БД.
Это что касается размещения вашего приложения. Сама же работа довольно таки простая: Браузер шлет запрос серверу (для простоты рассмотрим GET HTTP по порту 80). Сервер принимает запрос через службу, которая денно и нощно прослушивает требуемый порт на наличие запросов. Получив запрос, служба парсит его, выделяет из заголовков нужную информацию (тип, кому предназначена, зачем вообще нужна) и перенаправляет далее. Уже зная какое приложение/сайт нужно запросу, запускается выполнение. В IIS, например, для этого используют так называемые Application Pools - выделенные мощности на сервере (обычно, память), внутри которых крутятся приложения/сайты и если сайт/приложение крашится, то кладет оно не всю службу IIS, а лишь свой пул. Ну и между пулами нельзя общаться - типа защита и все такое. Наконец-таки запрос доходит до самого сайта/приложения, где обрабатывается по логике, заложенной программистом.
По пути, естественно, может случаться всякое: не найдена страница - возвращаем 404, не авторизован пользователь (а в настройках службы/пула/приложения стоит, что неавторизованных шлем подальше) -401 ошибка и пр...