It is in the RFC5322, you just missed it:
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
Let's break this down.
address either a mailbox or a group. A mailbox is a name-addr or addr-spec.
This name-addr is the format you're asking about: there 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.
So, in conclusion:
John Doe <john@example.com> is a name-addr, which is a variant of mailbox, which is 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.