I cant see why I would need uniform convergence and not just pointwise for the result here. My attempt:
Let $\epsilon >0$. Since $x_n \to x$ then $\exists \ n_1 \ $ s.t $n>n_1 \implies d(x_n, x) <\delta \implies |f(x_n)-f(x)| < \dfrac{\epsilon}{2}$. Also, since $f_n \to f$, $\exists \ n_2 \ $ s.t $n>n_2 \implies |f_n(y)-f(y)| < \dfrac{\epsilon}{2}$.
Then, if $n > n_0 = \max\{n_1, n_2\} \implies |f_n(x_n)-f(x)| \leq |f_n(x_n) - f(x_n)| + |f(x_n)-f(x)| < \epsilon$.
Now, I don't get why pointwise convergence doesn't do it here, since i'm just using $f_n(x_n) \to f(x_n)$.
The flaw in your proof is that the statement $|f_n(y)-f(y)|<\epsilon/2$ is true for fixed $y$. So you cannot substitute $y=x_n$, which depends on $n$. The quantity $|f_n(x_n) - f(x_n)|$ behaves quite differently from the quantity $|f_n(y)-f(y)|$, since both the function $f_n$ and the point $x_n$ being observed are now varying with $n$. In particular, you cannot say that $f_n(x_n)$ is converging pointwise to $f(x_n)$, since $n$ is still present in $f(x_n)$.