Why can we use flabby sheaves to define cohomology? In my algebraic geometry class, we defined sheaf cohomology using flabby sheaves, and the functor on the category of sheaves on a space $X$:
$$
D: \mathcal F \mapsto D\mathcal F
$$
where
$$
D\mathcal F(U)=\left\{s:U\to \bigsqcup_{p\in X}\mathcal F_p\middle| s(p)\in\mathcal F_p\right\}
$$
$D\mathcal F$ is then a flabby sheaf containing $\mathcal F$.  
But when I did some further research into derived functor cohomology, it became clear that the important property you need is that sheaf categories 'have enough injectives' - so every sheaf is a subsheaf of some injective sheaf.  At first I thought that flabby sheaves and injective sheaves were the same thing, but then I found out that in fact, being injective is a stronger property: every injective sheaf is flabby, but not every flabby sheaf is injective.  
How then, were we able to develop the cohomology theory using flabby sheaves, when one in general needs to consider injective objects?
 A: That is true, not every flabby sheaf is injective, but the important thing to compute cohomology is to be able to build an acyclic resolution. Injectives are acyclic, but they are not the only class of acyclic objects! In fact, flabby sheaves are acyclic as well (for the $\Gamma(X,-)$ functor). This of course would not be enough if you were not able  to construct flabby resolutions for every sheaf. But luckily, every sheaf has a canonical flabby resolution, called the Godement resolution. The functor you describe gives you the first piece $0\to \mathcal F\to D\mathcal F$ of the resolution.
A: At first, the problem to solve is of purely categorical nature and does involve neither injective nor flabby sheaves: Given any left-exact functor ${\mathcal F}:{\mathscr A}\to{\mathscr B}$ between abelian categories, define a measure of failure of its right exactness. 
One attempt to formalize this is provided by the notion of $\delta$-functors: A $\delta$-functor is an ${\mathbb N}_{\geq 0}$-indexed family of additive functors ${\mathcal T}^i: {\mathscr A}\to{\mathscr B}$ with ${\mathcal T}^0\cong{\mathcal F}$ together with, for any short exact sequence ${\mathscr E}: 0\to X\to Y\to Z\to 0$ in ${\mathcal A}$ and any $i\geq 0$, a connecting morphism $\delta^i({\mathscr E}): {\mathcal T}^i(Z)\to{\mathcal T}^{i+1}(X)$ such that the following long sequence in ${\mathscr B}$ is exact:
$$...\to {\mathcal T}^{i-1}(Z)\to{\mathcal T}^i(X)\to{\mathcal T}^i(Y)\to{\mathcal T}^i(Z)\to{\mathcal T}^{i+1}(X)\to ...$$
Then the ${\mathcal T}^i$ with $i>0$ can be thought of as compensating for the failure of right-exactness of ${\mathcal T}^0$.
The questions of existence and uniqueness arise.
For uniqueness, one has the notion of universality: A $\delta$-functor ${\mathcal T}^{\ast}$ is universal if for any other $\delta$-functor ${\mathcal S}^i$ any natural transformation ${\mathcal T}^0\to{\mathcal S}^0$ can uniquely be extended to a morphism of $\delta$-functors ${\mathcal T}\to{\mathcal S}$. Fixing ${\mathcal T}^0$, universal $\delta$-functors are unique up to unique isomorphism, the most important criterion for universality is then the following: If ${\mathcal T}$ is effecable in the sense that for any $X\in{\mathscr A}$ there exists a monomorphism $X\hookrightarrow I$ such that ${\mathcal T}^i(I)=0$ for all $i>0$, then ${\mathcal T}^{\ast}$ is universal.
What about existence of an effecable $\delta$-functor?
Firstly think about which objects $I\in{\mathscr A}$ are candidates for the required ones satisfying ${\mathcal T}^i(I)=0$ for all $i>0$. Consider ${\mathcal T}^1$ first: If $0\to I\to A\to B\to 0$ is a short exact sequence, then ${\mathcal T}^1(I)$ should measure the failure of right-exactness of $0\to {\mathcal T}^0 I\to {\mathcal T}^0 A\to {\mathcal T}^0 B\to 0$ - in particular, it might/should vanish whenever this sequence is already exact? So say that $I$ is ${\mathcal T}^0$-preacyclic (not standard terminology, but I need to distinguish it from the standard notion of ${\mathcal T}^0$-acyclicity which is stronger) if any short exact sequence $0\to I\to A\to B\to 0$ stays exact under application of ${\mathcal T}^0$. Any ${\mathscr A}$-injective object is ${\mathcal T}^0$-preacyclic: any short exact sequence $0\to I\to A\to B\to 0$ with $I$ injective is split exact, and split exactness is preserved under any additive functor. However, particular functors may admit more preacyclic objects - for example, flabby sheaves are preacyclic for the global sections functor.
The ${\mathcal T}^0$-preacyclic objects are those you intuitively would like the functors ${\mathcal T}^i, i>0$ to vanish at (this will only be true for the stronger notion of ${\mathcal T}^0$-acyclic objects in the end, but at the moment, that's the idea). Interestingly, it turns out that this already forces the definition of ${\mathcal T}^i$ completely, and the argument for this is usually called dimension shifting: If you already defined ${\mathcal T}^0,...,{\mathcal T}^n$, and if $X\in{\mathscr A}$ is given, pick any $0\to X\to I\to X^{\prime}\to 0$ with $I$ a preacyclic object. Then the long exact sequences yields the isomorphism ${\mathcal T}^{n+1} X\cong\text{coker}\left({\mathcal T}^n I\to {\mathcal T}^n X^{\prime}\right)$, so provided you already defined ${\mathcal T}^n$ and you know which objects are to be preacyclic, the definition of ${\mathcal T}^{n+1}$ is forced.
All this was a bit sloppy but hopefully motivates, in the end, the idea of defining ${\mathcal T}^{\ast}$ through the choice of ${\mathcal T}^0$-preacyclic resolutions. It turns out however that in order to make this work one cannot work with arbitrary ${\mathcal T}^0$-preacyclic resolutions but instead has to use ${\mathscr S}$-resolutions, where ${\mathscr S}$ is any class of ${\mathcal T}^0$-preacyclic objects which additionally has the following properties:


*

*Any object admits an embedding into an object in ${\mathscr S}$.

*For $0\to X\to Y\to Z\to 0$ with $X,Y\in{\mathscr S}$, also $Z\in{\mathscr S}$.

*${\mathscr S}$ is closed under summands.
If ${\mathscr A}$ has enough injectives, you can always choose ${\mathscr S}$ to be the class of injective objects, but in case of ${\mathcal T}^0 = \Gamma$ the global sections functor, you can also take for ${\mathscr S}$ the class of flabby sheaves.
A posteriori, you learn that there is even a largest class ${\mathscr S}$ with the above properties, namely the class of those $I\in{\mathscr A}$ satisfying ${\mathcal T}^i(I)=0$ for all $i>0$, and are called ${\mathcal T}^0$-acyclic. However, even without knowing ${\mathcal T}^{\ast}$ in advance you can prove acyclicity of objects by showing that they belong to a class ${\mathscr S}$ with the properties above.
From my experience, it is common to define ${\mathcal T}^i$ through injective resolutions and to show then that it can be computed using ${\mathscr S}$-resolutions as well. This has the advantage of making it simpler to check the independence of the choice of resolution, since injective resolutions are unique up to homotopy.
