I have some questions to ask about the second part of the proof, i.e. $[\Leftarrow]$ direction:
- The author says, "As always, it is enough to find a subsequence of $(x_n)$ that converges". What do they mean by "As always"? Where else is this technique employed and why is it so obvious? Suppose I do find a subsequence $(x_{n_k})$ that converges. That does not imply that $(x_n)$ converges as well. $\color{blue}{\text{(Resolved).}}$
- The author asks us to choose a subsequence $(x_{n_k})$ such that $$\|x_{n_{k+1}} - x_{n_k}\|< 2^{-k}, \text{ for all }k$$ What allows us to do this? Given a Cauchy sequence $(x_n)$, I know that $$\forall \epsilon > 0 \exists N\in\Bbb N \forall m,n\ge N (\|x_m-x_n\| < \epsilon)$$ I could put $\epsilon = 2^{-k}$ and find the corresponding $N$, but that doesn't give me a subsequence! $\color{blue}{\text{(Resolved).}}$
Attached is the proof for reference:
Thanks a lot!

By taking $\epsilon = 2^{-k}$ as you suggest, you find that for every $k$, there exists $N_k$ such that for all $n,m \ge N_k$ we have $\|x_n - x_m\| < 2^{-k}$.
Taking $x_{N_k}$ as your subsequence almost works, except that the $N_k$ are not necessarily increasing so it may not actually be a subsequence. To fix this, we can use Korone's idea of "making sure the next index is larger than both the previous index and the threshold!" Define $n_k$ recursively by $n_0 = N_0$, $n_{k+1} = \max(N_{k+1}, 1+n_{k})$. Then you can check that the desired property holds for the subsequence $x_{n_k}$, since $n_{k+1} \ge n_k \ge N_k$.