Допустим я имею немалый проект, можно ли в своем коде (API) смешивать и viewset, и apiview, и generic и т.д.?
Стоит ли использовать ViewSet?
Чем лучше пользоваться и можно ваши рекомендации по написанию DRF кода?
Использовать нужно то, что соответствует твоим потребностям. Нужна самая простая и обычная функциональность - используй вью сет. Нужно что-то посложнее - используй то, что лежит на уровне ниже.