First, we'll use the same idea to show that undecdiable languages exist. The idea is that there are only countably many Turing machines but uncountably many languages. Thus, at least some of them have to be unrecognizable.
Theorem. Some languages are not Turing-recognizable.
Proof. First we need to show that the set of Turing machines is countable. We note that the set of all string $\Sigma^*$ is countable. Clearly, we can systematically enumerate them in lexicographic order.
Then we observe that every Turing machine has a string encoding $\langle M \rangle$. Now, not every string corresponds to a proper encoding of a Turing machine, but we can ignore all of those. Thus, there are countably many Turing machines.
Now, we show that the set of all languages is uncountable. To do so, we show that the set of all infinite binary sequences is uncountable. An infinite binary sequence is an infinitely long sequence of 0s and 1s. Let $\mathcal B$ be the set of all infinite binary sequences. We use diagonalization to show that $\mathcal B$ is uncountable.
Suppose we have a correspondence $f : \mathbb N \to \mathcal B$. Then we construct an infinite binary sequence $\overline b = b_1 b_2 \cdots$ by specifying that $b_i$ is a 0 if the $i$th digit of $f(i)$ is 1 and 1 if the $i$th digit of $f(i)$ is 0. Then, $\overline b$ is clearly not in the correspondence so we have a contradiction and $\mathcal B$ is uncountable.
Now, let $\mathcal L$ be the set of all languages over $\Sigma$. We show that there is a correspondence $f : \mathcal L \to \mathcal B$. Let $s_1, s_2, \dots$ be a sequence of words in $\Sigma^*$ in lexicographic order. We show that every language $A \in \mathcal L$ corresponds to a unique sequence in $\mathcal B$. We define $f(A)$ as the sequence in $\mathcal B$ where the $i$th bit is 1 if $s_i \in A$. We call this sequence the characterstic sequence of $A$.
This correspondence establishes the uncountability of the set of all languages $\mathcal L$. Thus, we cannot establish a correspondence between $\mathcal L$ and the set of all Turing machines, which means there must exist some language that is not recognized by a Turing machine. $$\tag*{$\Box$}$$
Just to refresh our memory, $A_{TM}$ is defined $$ A_{TM} = \{ \langle M,w \rangle \mid \text{$M$ is a TM and $M$ accepts $w$} \} $$ and we are ready to prove the following result.
Theorem. $A_{TM}$ is undecidable.
Proof. We assume that $A_{TM}$ is decidable and end up showing that it isn't. Suppose we have a TM $H$ that decides $A_{TM}$. Then on $\langle M,w \rangle$, $H$ halts and accepts if $M$ accepts $w$ and it rejects if $M$ does not accept $w$.
We construct a new TM $D$ that takes as input the description of a Turing machine and operates as follows:
Let's consider the result of running each Turing machine on a string of encodings of Turing machines. Suppose we have an enumeration of Turing machines $M_1, M_2, \dots$ and the following table tells us whether or not each machine accepts the encoding of some other machine, including itself. Now, let's consider the result of $D$ when run on a description of one of these machines: it is basically the opposite of whatever runs along the diagonal. When presented this way, the diagonal argument becomes clear.
| $\langle M_1 \rangle$ | $\langle M_2 \rangle$ | $\langle M_3 \rangle$ | $\langle M_4 \rangle$ | $\langle M_5 \rangle$ | $\cdots$ | |
| $M_1$ | ✔️️ | ❌ | ✔️️ | ✔️️ | ❌ | |
| $M_2$ | ✔️️ | ❌ | ✔️️ | ❌ | ❌ | |
| $M_3$ | ❌ | ✔️️ | ✔️️ | ✔️️ | ❌ | |
| $M_4$ | ✔️️ | ❌ | ❌ | ❌ | ❌ | |
| $M_5$ | ✔️️ | ❌ | ✔️️ | ✔️️ | ❌ | |
| $\vdots$ |
Now, let us consider the result of $D$ when run on the input string $\langle D \rangle$. $D$ must accept if $D$ does not accept $\langle D \rangle$ and it must reject if $D$ accepts $\langle D \rangle$, which is a contradiction. Thus, neither Turing machines $D$ or $H$ can exist and $A_{TM}$ is undecidable. $$\tag*{$\Box$}$$
Now that we've settled the question of undecidability, we can show that there are even languages that are unrecognizable. We alluded to the existence of these languages before, but the undecidability result gives us a way to show that certain languages are unrecognizable.
We say that a language is co-Turing-recognizable if it is the complement of a Turing-recognizable language.
Theorem. A language is decidable if and only if it is Turing-recognizable and co-Turing-recognizable.
Proof. If $A$ is decidable, then $A$ and $\overline A$ are recognizable, since a decidable language and its complement are recognizable.
If $A$ and $\overline A$ are recognizable, then there exist Turing machines $M_1$ and $M_2$ that recognize $A$ and $\overline A$, respectively. Then we can construct a Turing machine $M_3$ that on input $w$ operates as follows:
Since $A \cup \overline A = \Sigma^*$, we have that either of $M_1$ or $M_2$ must accept, which means that $M_3$ is guaranteed to halt. This means that $A$ is decidable. $$\tag*{$\Box$}$$
Corollary. $\overline{A_{TM}}$ is not recognizable.
Proof. If $\overline{A_{TM}}$ were recognizable, then $A_{TM}$ would be decidable. $$\tag*{$\Box$}$$