Definition: Let $L:C\to D$ be a functor, and let $R:D\to C$ be another functor. Then $L$ and $R$ are adjoint functors if for $X\in$ Obj $(C)$ and $Y\in$ Ob $(D)$, we have $Mor_C(X,RY)\simeq Mor_D(LX,Y)$.
1. Solutions to Optimization Problems: Suppose you have an rng (which is a ring without the identity element), and you want to “adjoin” the minimal number of elements to the rng such that it becomes a ring. Explicitly, you want to adjoint $1$ to the rng, along with the elements $r\pm 1$ for all $r\in rng$. How can you solve this problem? For any fixed ring $R$, consider the category $E$ in which the objects are morphisms of the form $R\to S_j$, where $S_j$ are unital rings. A morphism between the objects $R\to S_i$ and $R\to S_j$ is a morphism between $S_i$ and $S_j$. Then the final object in this category is $R$ adjoined with the unity. This is the smallest ring which contains $R$. Hence, this is the most efficient solution to our problem.
When we have a functor $L$, we ask ourselves what is the problem $R$ to which $L$ is the most efficient solution. Then $L$ is the left adjoint of $R$.
We have different formulations for adjoint functor. The unit-counit formulation says that $1_c=R\circ L$ and $1_D=L\circ R$.
In terms of Hom isomorphism: An adjunction $L\vdash R$ is a natural isomorphism between functors $C^{op}\times D\to Set$. What does this mean? We study the isomorphisms between functors from $C^{op}\times D$ to $Set$. This natural isomorphism is given by $Hom_C(X,RY)\simeq Hom_D(LX,Y)$. How is this a natural transformation between functors from $C^{op}\times D$ to $Set$? So we take a tuple $(X,Y)\in C\times D$, the make the following two functors act on it: $(X,Y)\to Hom(LX,Y)$ and $(X,Y)\to Hom(X,RY)$. Then the natural isomorphism is the isomorphism between these two functors. But why $C^{op}$? Why not just $C$? If one draws the commutative diagram, one will soon figure out that reversing the arrows in $C$ is a simple way of mapping $Hom(RX,Y)$ to $Hom(X,LY)$.