As stated on the wikipedia page, Grothendieck generalized Serre duality by stating that there exists a right adjoint functor $f^!$ to the functor $Rf_!$ when one works within the correct category.
Serre Duality [Hartshorne]: Let $X$ be a projective scheme of dimension $n$ over an algebraically closed field $k$. Let $\omega_X^\circ$ be the dualizing sheaf on $X$. Then for any coherent sheaf $\mathcal{F}$ on $X$, there are natural functorial maps $$\theta^i : \operatorname{Ext}(\mathcal{F}, \omega_X^\circ) \rightarrow H^{n-i}(X, \mathcal{F})'.$$
How can one recast the above theorem in terms of an adjoint functor?
In the derived category of coherent sheaves on a smooth projective scheme $X$ of dimension $n$, Serre duality in the general form $\mathrm{Ext}^i(F,G \otimes \omega) \cong \mathrm{Ext}^{n-i}(G,F)^*$ becomes $\hom(F,G \otimes \omega[i]) \cong \hom(G,F[n-i])^*$, or simply $\hom(F,G \otimes \omega[n]) \cong \hom(G,F)^*$. This means that tensoring with $\omega[n]$ is a Serre functor. As soon as we have a Serre functor, it is abstract nonsense that every functor which has a left adjoint, also has a right adjoint. Roughly, it is given by twisting the left adjoint with the Serre functors. For example, if $f : X \to Y$ is a morphism between smooth projective schemes, this means that $R f_*$ has a right adjoint, given by $$R f^! := L f^* (- \otimes \omega_Y^{-1} [-\dim(Y)]) \otimes \omega_X[\dim(X)]$$
All this is very nicely explained in Lecture 4 of Caldararu's "Derived categories of sheaves: a skimming", online.