html { height: 100%; } - Это свойство устанавливает высоту элемента html равной 100% высоты окна просмотра. Поскольку html является корневым элементом, он может определять высоту для всех своих дочерних элементов.
body { min-height: 100%; } - Здесь min-height устанавливает минимальную высоту элемента body так, чтобы она была не меньше высоты элемента html, которая уже установлена в 100% высоты окна просмотра. Это гарантирует, что содержимое body будет занимать как минимум полную высоту экрана, независимо от количества содержимого.
height: 100% делает высоту строго полностью, как контейнер, в котором находится, а min-height: делает также, но при этом если содержимое body будет не умещаться, то контейнер будет растягиваться
Нет острой необходимости назначать высоту для body и тем более для html. Они и так растянутся от контента. Но если контента мало можно на время поставить min-height: 100vh, чтобы растянуть body до размера окна, например если у тебя фон указан, не будет пустого белого пространства.
А min-height просто указывает то что высота будет от х до бесконечности.
Хочу добавить, что min-height может неочевидно влиять на позиционирование элементов внутри, когда сталкивался с этим долго не мог понять в чем дело