Определение, ставить или не ставить дефис, зависит от правил русского языка, связанных с составными наименованиями и должностями. Давайте разберём несколько примеров из вашего списка:
Бабочка капустница – не ставим дефис, это сочетание из двух существительных, где "капустница" является определением.
Врач терапевт – дефис не ставим, так как "врач" – это основное слово, а "терапевт" уточняет его квалификацию.
Инженер строитель – снова без дефиса. "Строитель" – это спецификация профессии.
Мальчики подростки – здесь тоже нет дефиса, так как "подростки" – это уточняющее слово.
Ангел хранитель – дефис не нужен, аналогично предыдущим примерам.
Озеро Байкал – без дефиса, "Байкал" служит определением озера.
Волга река – тоже не ставим дефис, усиление не требуется.
Геологи нефтяники – дефис не ставим, "нефтяники" уточняет род деятельности.
Лётчик испытатель – без дефиса, так как "испытатель" уточняет род деятельности.
Товарищ капитан – дефис не требуется, "капитан" уточняет позицию.
Оператор программист – без дефиса, это описание профессии.
Город Астрахань – здесь не нужно ставить дефис.
Гражданин инспектор – без дефиса, "инспектор" указывает на должность.
Ильмень озеро – тоже без дефиса, так как "Ильмень" – название.
Иван царевич – дефис не требуется, это именительное сочетание.
Орёл стервятник – без дефиса, это название вида.
Солдат украинец – дефис не нужен, "украинец" уточняет национальность.
Ангара красавица – в данном случае дефис не ставим, это просто описание.
Красавица Ангара – так же, без дефиса.
Старик пастух (старый пастух) – без дефиса, "пастух" уточняет, какой именно старик.
Гриб боровик – дефис не ставим, это название гриба, "боровик" уточняет.
Господин посол – также без дефиса, "посол" является уточнением.
Основное правило: дефис используется в тех случаях, когда в составных словах происходят признаки объединения, такие как сложные наименования или собственные фамилии. В остальных случаях, как в приведённых примерах, дефис не ставится.
Если у вас возникли дополнительные вопросы по этой теме, не стесняйтесь задавать!