It's truly bizarre that there exists no full modern exposition of this theorem, as noted elsewhere. Anyway, I thought I'd poke through and see if I could get the gist of how it works as somebody who has familiarity with categorical techniques, if not abelian techniques.
Here's how it goes, following Swan and wikipedia. We have a small abelian category $\mathcal{A}$, and we want a full exact embedding into the category of modules for some ring. The first step is to take the Yoneda embedding $\mathcal{A} \to \mathcal{L}^\mathrm{op}$, where $\mathcal{L} = \mathrm{Lex}(\mathcal{A},\mathsf{Ab})$. There are other ways to denote $\mathcal{L}$ -- it's $\mathrm{Ind}(\mathcal{A}^\mathrm{op})$, or $\mathrm{Pro}(\mathcal{A})^\mathrm{op}$. So it's a general fact that this embedding is exact, and I totally believe that $\mathcal{L}^\mathrm{op}$ is abelian.
But unless I'm reading something wrong, the point is that $\mathcal{L}^\mathrm{op}$ actually is a category of modules over a ring -- one constructs a projective generator in it. This can't be right. Because $\mathcal{L}^\mathrm{op} = \mathrm{Ind}(\mathcal{A}^\mathrm{op})^\mathrm{op}$ is the opposite of a locally presentable category! So $\mathcal{L}^\mathrm{op}$ can't be locally presentable (the opposite of a locally presentable category is never locally presentable unless the category is a preorder -- cf the nlab Counterexample 7, or Thm 1.64 in Adámek and Rosický), and hence it can't be the category of modules over a ring.
What am I misunderstanding? The obvious thing to do is to dualize and embed $\mathcal{A}$ into $\mathrm{Lex}(\mathcal{A}^\mathrm{op},\mathsf{Ab}) = \mathrm{Ind}(\mathcal{A})$, which is locally presentable. But if you do this it seems it would take some kind of miracle for the generator to be projective.
You don't show that $\mathcal{L}^{op}$ actually is a category of modules, just that any small subcategory of it fully and exactly embeds in one. Indeed, an abelian category with a projective generator is not usually equivalent to a category of modules: it only is if the projective generator is compact (and the category is cocomplete). In the case of $\mathcal{L}^{op}$, there is no reason to expect the projective generator to be compact.
Note that in general, a projective generator doesn't even necessarily give a full embedding into a category of modules, let alone one that is essentially surjective on objects. However, if you have a projective generator $P$ that can actually surject onto every object, then $\operatorname{Hom}(P,-)$ does give a fully faithful exact embedding into $R\text{-Mod}$ where $R=\operatorname{End}(P)$ (but then it won't be essentially surjective on objects, since if such a $P$ exists your category won't be cocomplete). Such a $P$ will exist for any small subcategory of $\mathcal{L}^{op}$ (just take a direct sum of enough copies of your projective generator), and in particular for the image of $\mathcal{A}$.
Here's a simple example where a projective generator does not give a full embedding (a special case of Jeremy Rickard's suggestion in the comments). Let $k$ be a field and consider $k$ as an object of $k\text{-Mod}^{op}$. Then $k$ is a projective generator, and the embedding it gives is just the duality functor $k\text{-Mod}^{op}\to k\text{-Mod}$. This is not full: if $V$ and $W$ are infinite-dimensional vector spaces, then not every linear map $W^*\to V^*$ is the dual of a linear map $V\to W$.
Here is a different sort of example that I think is also instructive. Take the category of countable abelian groups, and by Lowenheim-Skolem take a countable subcategory $\mathcal{C}$ that is an elementary substructure (over the language of categories) and contains the objects $\mathbb{Z}$, $\bigoplus_\mathbb{N}\mathbb{Z}$, and all homomorphisms $\mathbb{Z}\to\bigoplus_\mathbb{N}\mathbb{Z}$. Then $\mathbb{Z}$ will still be a projective generator for $\mathcal{C}$, and so it gives a faithful exact embedding $\mathcal{C}\to\mathcal{Ab}$ which sends $\bigoplus_\mathbb{N}\mathbb{Z}$ to $\operatorname{Hom}_{\mathcal{C}}(\mathbb{Z},\bigoplus_\mathbb{N}\mathbb{Z})=\bigoplus_\mathbb{N}\mathbb{Z}$. But the inclusion is not full, since $\mathcal{C}$ is countable and hence $\operatorname{Hom}_{\mathcal{C}}(\bigoplus_\mathbb{N}\mathbb{Z},\bigoplus_\mathbb{N}\mathbb{Z})$ is countable, but $\operatorname{Hom}_{\mathcal{Ab}}(\bigoplus_\mathbb{N}\mathbb{Z},\bigoplus_\mathbb{N}\mathbb{Z})$ is uncountable.