the enumerator characterization
Why is a recognizable language also called recursively ENUMERABLE? Because there is a second, equally valid way to describe exactly the same languages: a language is recognizable precisely when some machine can LIST its members, one after another, like a tireless catalogue printer that keeps churning out every title the library owns. It need never finish (the list may be infinite, and order and repeats do not matter), but every member eventually gets printed, and nothing that is not a member ever appears. That listing device is called an enumerator.
An enumerator is a Turing machine with a printer (an output channel) and no input; it just runs and emits strings. The language ENUMERATED by it is the set of all strings it ever prints. The theorem says: a language is Turing-recognizable if and only if some enumerator enumerates it. From a recognizer to an enumerator: dovetail the recognizer over all strings s1, s2, s3, ... and print si whenever its simulation accepts. From an enumerator back to a recognizer: on input w, run the enumerator and accept as soon as it prints w (if w is never printed, you simply loop forever — which is exactly what a recognizer is allowed to do).
This is the origin of the historic name and a genuinely useful tool. It lets you prove a language is recognizable by exhibiting a listing process rather than an accept/reject machine, and it makes the closure proofs for RE languages natural (to enumerate a union, dovetail two enumerators). One honest subtlety distinguishes the two classes: a language is DECIDABLE exactly when it can be enumerated in strictly increasing (sorted) order — because then, to test w, you list until you pass w and stop. Merely recognizable languages can be enumerated, but not necessarily in sorted order, which is precisely why they need not be decidable.
An enumerator for the even binary numbers prints 0, 10, 100, 110, ... forever. Because that order is increasing, the language is even decidable: to test a string, list until you reach or pass it. A recognizable-but-undecidable language has an enumerator too, just not a sorted one.
Recognizable = enumerable. Decidable = enumerable in sorted order.
The enumerator may print members in any order, with repeats, and may never terminate. 'Enumerable' is about eventually listing every member, not about producing a finite or ordered list.