Semantic elements define their contents; non-semantic elements do not. In other words, placing content within a paragraph does not add meaning or indicate the type of content.
Paragraph Element
This is the paragraph element. This is simply used to indicate that a group of text forms a paragraph.
<p>
and </p>
Span Element
Span is a non-semantic text-level element. Span provides no context as to content; it functions as an inline version of div. This is primarily used for formatting purposes.
In the following example, span is used to select the word text. This is most commonly used with CSS; in this example, the CSS class of bluetext would be applied to the word 'text'.
This is some <span class="bluetext">text</span>.
Div Element
The division element is used to separate a portion of your HTML. It has no semantic content and really should only be used to group content for formatting. Div could be considered a last resort.
<div>
and </div>