Как расположить div под фиксированной шапкой, чтобы она не наезжала на него?
С min-height у вас ничего не выйдет. Если нужно фиксированное позиционирование - оберните оба тега в контейнер и позиционируйте его.
По поводу изменения высоты шапки - именно для этих целей и придумали переменные в CSS и во всех его препроцессорах.
1 вариант - Вам предложил Алексей
2 вариант  - js скрипт, который проверяет высоту шапки и меняет отступ.
3 вариант - margin-top: 50px; если меняете height: 50px; Все равно в css лезть. Это же одно строчка.
ПС: можете посмотреть как реализован навбар у бутстрапа getbootstrap.com/components/#navbar-fixed-top