the language of a DFA
Acceptance asks about one string at a time; the language of a DFA is the big-picture answer: it is the set of all strings the machine accepts, gathered together. For a machine M we write this set L(M) and read it 'the language of M' or 'the language recognised by M'. It is the machine's entire behaviour boiled down to a single set.
Formally, L(M) = { w in Σ* : δ-hat(q0, w) ∈ F } — the collection of every string over the alphabet whose unique run ends in an accept state. To say the DFA recognises (or accepts, in the language sense) a particular language A means precisely that L(M) = A: the machine accepts every string in A and rejects every string not in A. 'Recognise' is therefore a two-sided promise, not just 'accepts the good ones'.
This is the bridge from machines to languages, and it is what the whole field is about. A language that is L(M) for some DFA M is called a regular language; designing a DFA for a specification is the same task as describing the language you want as L(M). Note that L(M) can be empty (when no string is accepted), finite, or infinite (the machine accepting all strings has L(M) = Σ*) — the language being infinite does not require infinitely many states.
For the 'ends in 1' DFA, L(M) = { w in {0,1}* : w ends with the symbol 1 } = {1, 11, 01, 101, 111, ...}, an infinite language recognised by a 2-state machine. Strings not ending in 1 (like 0, 10, ε) are exactly the ones outside L(M).
L(M) = all strings M accepts; recognising A means L(M) = A exactly.
Recognising a language is a two-sided requirement: accept every string in it AND reject every string outside it. A machine that accepts all of A but also accepts extra strings does not recognise A.