Вы устанавливаете размер шрифта для тела, которое будут наследовать другие элементы, но h2 предустановлен браузером внутренне пользовательским агентом css, в частности, как в 'специфичности' и имеет приоритет над тем, что вы установили для тела.
Если вы, например, используете Firebug, вы увидите, что браузер уже установил в вашем браузере значение h2. Если вы хотите изменить это, вам нужно указать h2{font-size: 24px}
, как вы делали в другом примере с div. У Div нет размера шрифта, установленного на них браузером.