Если я не ошибаюсь, то это называется "кооперативная многозадачность".
Правила примерно два:
1. использовать асинхронный IO (в частности модуль OS !НЕ! асинхронный!)
2. На долго не занимать процессорное время (обычно это связанно с математическими вычислениями).
Вы верно понимаете, бесконечный цикл подвесит тарантула. Но и учитывайте, что, например, ожидание ответа по сети не блокирует выполнение остальных файберов (это асинхронная функция и ваш файбер передаст управление основному циклу. А уж когда придет ответ на сетевой запрос - основной цикл опять передаст управление вашему файберу).