RFC 8499 deals with DNS terminology and should be the go to reference for anything technical on the subject. It collates definitions from various RFCs, put them in context, and tries to resolve inconsistencies.
It follows then:
Domain name: An ordered list of one or more labels.
Label: An ordered list of zero or more octets that makes up a
portion of a domain name. Using graph theory, a label identifies
one node in a portion of the graph of all possible domain names.
Subdomain: "A domain is a subdomain of another domain if it is
contained within that domain. This relationship can be tested by
seeing if the subdomain's name ends with the containing domain's
name." (Quoted from [RFC1034], Section 3.1) For example, in the
host name "nnn.mmm.example.com", both "mmm.example.com" and
"nnn.mmm.example.com" are subdomains of "example.com". Note that
the comparisons here are done on whole labels; that is,
"ooo.example.com" is not a subdomain of "oo.example.com".
Zone: "Authoritative information is organized into units called
ZONEs, and these zones can be automatically distributed to the
name servers which provide redundant service for the data in a
zone." (Quoted from [RFC1034], Section 2.4)
"Domain" and "Domain name" are often synonyms, it just depends on the context and how they are used. You can find as well FQDN.
In summary, "most often", a domain or domain name is a single name/record, so you are pointing to one specific node in the DNS tree, where instead "zone" means all the content at or below a specific node in the DNS tree.