RFC5322 Section 3.4: Address Specification

Source: https://www.rfc-editor.org/rfc/rfc5322#section-3.4

address         =   mailbox / group
mailbox         =   name-addr / addr-spec
name-addr       =   [display-name] angle-addr
angle-addr      =   [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr
group           =   display-name ":" [group-list] ";" [CFWS]
display-name    =   phrase
mailbox-list    =   (mailbox *("," mailbox)) / obs-mbox-list
address-list    =   (address *("," address)) / obs-addr-list
group-list      =   mailbox-list / CFWS / obs-group-list

A mailbox is a name-addr or addr-spec.

This name-addr is an optional display-name (it's optional because it is defined with square
brackets) followed by the angle-addr, which itself is an addr-spec in angle brackets with
optional foldable space CFWS on both sides of it (defined further in the section 3.2.2), or
an obsolete address format obs-angle-addr.

A whole section 3.4.1 is dedicated to the description of addr-spec format.

In conclusion:

John Doe <john@example.com> is a name-addr (a variant of mailbox (a variant of address)).
John Doe is a display-name.
<john@example.com> is an angle-addr.
john@example.com is an addr-spec.
john is a local-part.
example.com is a domain.