По первому вопросу:
Возможно ли, чтобы клиент отправил еще один HTTP-запрос до того, как сервер обработает первый?
Я полагаю, что да, это может быть возможно (возможно, я ошибаюсь, я вспомнил, что читал это пару лет назад; окончательный ответ - в спецификациях протокола HTTP). Но я не понимаю, почему вы спрашиваете. Кроме того, клиент может открыть несколько TCP-подключений одновременно к одному и тому же HTTP-серверу. И, конечно, у вас много одновременных клиентов.
О втором вопросе
Также, при использовании постоянного соединения, безопасно ли предположить, что все запросы через это соединение будут иметь одинаковый заголовок "Host:"?
Я полагаю, что это обычно так, но я не буду считать это достоверным. Я мог бы предположить, что некоторые умные клиенты HTTP, распознавая, что два URL с разными заголовками Host: совместно используют один и тот же IP, могут повторно использовать одно и то же соединение.
Но я не понимаю, почему вы спрашиваете. Постоянные соединения HTTP были изобретены для минимизации дорогостоящих соединений TCP, и два вопроса, которые вы задаете, являются крайним моментом в этом отношении. Возможно, немногие клиенты HTTP делают то, что вы описали сегодня.
И вы должны быть строгими в отношении того, что вы отправляете (w.r.t. стандартное соответствие), но гибко в отношении того, что вы принимаете.