Можно ли совмещать разработчика и тестировщика в одном человеке?
Требования и хотелки часто меняются
автоматическое тестирование - это самое первое что снижает стоимость разработки и количество багов. минимальными багами, но фактически багов бывает достаточно много.
кем считается? сколько это минимальными, сколько это достаточно много? 
какие-то не понятные величины, очень сложно понять что вы вообще имеете ввиду и кто такое количество установил. 
вам нужно написать автоматизированные тесты - они все должны проходить до релиза. 
-------
1) Каждая функция должна быть покрыта хотя бы одним тестов, все тесты должны быть пройдены. Количество багов выявленных самим программистом должно быть равно нулю - передает другому тестировщику именно потому что он их уже найти не может. 
2) Да может, в небольших продуктах тестировщики не нужны, 
Аргументы за тестировщиков - иногда сложно самому находить ошибки в своем же коде (предвзятый взгляд). 
Аргумент против - лишняя координация работы + бестолковые обезьяны сколько бы не копались все равно не смогут грамотно оттестировать продукт, для создания хороших тестов нужны хорошие разработчики которые более менее понимают про полноту и эквивалентность функций, могут создать генераторы тестов и тд.
> Какое считается нормальное количество багов в версии, которая передается тестировщику?
Количество багов о которых знает разработчик - должно быть 0. А те, что найдет тестировщик - это уже зависит от кучи факторов. Тут нет понятия нормального количества.
> Как определить границу, какие баги должны быть найдены и исправлены самим разработчиком?
Как определить границу, сколько раз надо поменять тз?)))
> Может ли разработчик самостоятельно тестировать свой проект до релизного состояния, чтобы вообще избавиться от тестировщика?
Нет. Во первых потому что его взгляд замылен. Во вторых потому, что цена часа работы программиста выше, чем у тестировщика.
Это тоже самое, что хирурга посадить на рисепшн.