Не питонист, но попробую ответить. Сам GIL живет внутри процесса, поэтому создание нескольких копий одного процесса вполне возможно. GIL разных процессов никак не будут пересекаться. Разные процессы могут обрабатывать разные данные. У разных процессов нет общей памяти ( если мы не учитываем shared-memory ). Разные процессы могут делать много полезного - парсить файлы, обрабатывать пользовательские запросы и тд.
С потоками все иначе. Так все потоки принадлежат одному процессу, и у них общая память GIL уже обойти нельзя. Но есть нюанс. Если поток выполняет некую системную функцию, в общем не связанную с самим питоном то таких функций можно выполнять одновременно любое количество. Основные примеры таких функций - чтение запись данных в файлы ( или в сокеты ). То есть можно принимать сразу множество сообщений в разных потоках, но как только мы вывалимся в питон код GIL снова вступит в силу и начнет их выполнять по очереди.