Имеет ли многопоточность смысл в Python?
Конечно имеет :)
GIL мешает только параллельному использованию процессора в пределах одного процесса. Можно использовать треды для долгих IO операций, можно процессы для операций на CPU, они GIL неподвластны :)
Сильно зависит от реализуемой задачи. 
Для задач типа пользовательского интерфейса - одного потока вполне достаточно, для убыстрения обработки потока независимых запросов с высоким временем ожидания - можно смело писать многопоточные решения и даже с учетом GIL будет большой выигрыш.
А вот для математических обсчетов больших массивов данных - тут GIL хотелось бы отключить, потому что разбиение задачи на продпроцессы иногда съедает своими накладными ресурсами все бенефиты использования много ядерных процессоров.