<span class="header">...</span>
Ideal for editing embedded text.
<div class="header">...</div>
Commonly used for blocks, but yes, also a block with text is a block.
<p class="header">...</p>
This is for paragraphs. In addition, by default they have an additional margin below it.
<label class="header">...</label>
Used only in the context of form elements.
You can use all of them for everything, you can also span it so that it appears as a block element, but you cannot be sure that it will be the same in all browsers. And, as SirDarius already mentioned, this is important for non-visual ways.
source share