Вне зависимости от того, на какой системе ты работаешь, среда тестирования должна быть максимально приближенной к среде запуска, в большинстве случаев это какой то linux дистрибутив. Если ты работаешь в windows, то как минимум у тебя должен быть установлен
wsl для запуска кода и тестирования в нём. В идеале конечно поставить в VirtualBox/VMware условный Ubuntu и работать в нём.
Далее у каждого проекта должно быть свое виртуальное окружение, то есть да, читай про
venv.
Docker для развертывания может использоваться далеко не всегда, но минимально знать его нужно. При базовом использовании он невероятно простой, за пол дня можно разобраться.
По поводу ошибок с БД - это нужно смотреть на код, где ты что читаешь, как пишешь и что вообще за ошибки. Потому что я вообще не представляю где может выплыть ошибка кодировки именно при работе с БД.