Recognizable vs co-recognizable languages
A language is recognizable if there is a Turing machine that enumerates all words in the language. It is co-recognizable if there is a Turing machine that enumerates all words not in the language.

Every language has a one-to-one correspondence to the natural numbers, simply because the number of possible words is countable.

To see the difference between recognizable and co-recognizable, let's take the prototypical example of a recognizable language: it is the language of Turing machines which halt on the empty input. It is easy to enumerate this language: run in parallel all Turing machines on the empty input, and whenever one of them halts, print its index. There is provably no similar way to enumerate the complement of this language.

If a language is both recognizable and co-recognizable, then it is decidable, meaning that there is a Turing machine that always halts and tells you whether the input belongs to the language or not. Indeed, if $L$ is recognizable and co-recognizable, then there is a Turing machine $T_1$ which enumerates all words in $L$, and other Turing machine $T_0$ which enumerates all words not in $L$. Using these, we construct a decider $T$: on input $w$, run $T_1$ and $T_0$ in parallel, until one of them prints $w$. If it were $T_1$, answer "Yes", and if it were $T_0$, answer "No".