Ты о чём конкретно? Что там в GenStage запутанно? Я скажу что там и правда есть некоторые не очень удобные и не очень очевидные вещи, но всё не так плохо
Ты называешь штуку «gen» В результате у тебя колбэки зависят от того, producer или consumer. Это как если бы на старте генсервера ты указывал его тип и в некоторых делал только Handle_call а в других - только handle_cast