Without enough injectives or projectives, you need to be very careful with the definition of derived functor.
With the right definition, you can prove that:
$\textrm{Ext}^n (A, B)$ classifies Yoneda extensions of $A$ by $B$ of degree $n$.
$\textrm{Ext}^*$ is (the cohomology of) the right derived functor of $\textrm{Hom}$, in both variables jointly as well as in each variable singly.
If $P$ is a projective resolution of $A$ then $\textrm{Ext}^* (A, B)$ can be computed as $\mathrm{H}^* (\textrm{Hom} (P, B))$.
If $I$ is an injective resolution of $B$ then $\textrm{Ext}^* (A, B)$ can be computed as $\mathrm{H}^* (\textrm{Hom} (A, I))$.
So what is such a definition?
Unfortunately, it is quite involved.
Let $\mathcal{A}$ be an abelian category, let $\textbf{Ch} (\mathcal{A})$ be the category of unbounded chain complexes in $\mathcal{A}$, and let $\mathbf{D} (\mathcal{A})$ be the derived category, i.e. the localisation of $\textbf{Ch} (\mathcal{A})$ with respect to quasi-isomorphisms.
This can be constructed somewhat more concretely as a category of fractions in the chain homotopy category $\mathbf{K} (\mathcal{A})$, i.e. $\textbf{Ch} (\mathcal{A})$ modulo chain homotopy, which is convenient for technical purposes.
Abusing notation, given an object $A$ in $\mathcal{A}$, we also write $A$ for the chain complex in $\mathcal{A}$ consisting of $A$ in degree $0$ and $0$ elsewhere.
Given a chain complex $C$ in $\mathcal{A}$ and an integer $n$, we write $\Omega^n C$ for the shifted chain complex with $(\Omega^n C)_m = C_{n+m}$.
(I use homological indexing.)
Thus, given an object $B$ in $\mathcal{A}$, $\Omega^{-n} B$ is the chain complex with $B$ in degree $n$ and $0$ elsewhere.
Given objects $A$ and $B$ in $\mathcal{A}$, we now define:
$$\textrm{Ext}^n_\mathcal{A} (A, B) = \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (A, \Omega^{-n} B)$$
Equivalently:
$$\textrm{Ext}^n_\mathcal{A} (A, B) = \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (\Omega^n A, B)$$
The elements of $\textrm{Ext}^n_\mathcal{A} (A, B)$ are certain equivalence classes of diagrams of the form below,
$$\require{AMScd}
\begin{CD}
\cdots @>>> 0 @>>> 0 @>>> \cdots @>>> A @>>> 0 @>>> \cdots \\
& @AAA @AAA & & @AAA @AAA \\
\cdots @>>> C_{n+1} @>>> C_n @>>> \cdots @>>> C_0 @>>> C_{-1} @>>> \cdots \\
& @VVV @VVV & & @VVV @VVV \\
\cdots @>>> 0 @>>> B @>>> \cdots @>>> 0 @>>> 0 @>>> \cdots
\end{CD}$$
where the rows are chain complexes in $\mathcal{A}$, $C \to A$ is a quasi-isomorphism in $\textbf{Ch} (\mathcal{A})$, and $C \to \Omega^{-n} B$ is any morphism in $\textbf{Ch} (\mathcal{A})$.
Given a projective resolution $P \to A$ and injective resolution $B \to I$, we have
$$\textrm{Ext}^n (A, B)
\cong \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (P, \Omega^{-n} B)
\cong \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (P, \Omega^{-n} I)
\cong \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (\Omega^n P, I)
\cong \textrm{Hom}_{\mathbf{D} (\mathcal{A})} (\Omega^n A, I)$$
because quasi-isomorphisms in $\textbf{Ch} (\mathcal{A})$ become isomorphisms in $\mathbf{D} (\mathcal{A})$.
Furthermore:
For any bounded below chain complex of projectives $P$ in $\mathcal{A}$, $\textrm{Hom}_{\mathbf{K} (\mathcal{A})} (P, -)$ sends quasi-isomorphisms to isomorphisms, so (abusing notation and omitting details) $\textrm{Hom}_{\mathbf{D} (\mathcal{A})} (P, -) \cong \textrm{Hom}_{\mathbf{K} (\mathcal{A})} (P, -)$; in particular, for any object $B$ in $\mathcal{A}$, $\textrm{Hom}_{\mathbf{D} (\mathcal{A})} (P, B) \cong \mathrm{H}^0 (\textrm{Hom}_\mathcal{A} (P, B))$.
For any bounded above chain complex of injectives $I$ in $\mathcal{A}$, $\textrm{Hom}_{\mathbf{K} (\mathcal{A})} (-, I)$ sends quasi-isomorphisms to isomorphisms, so (abusing notation and omitting details) $\textrm{Hom}_{\mathbf{D} (\mathcal{A})} (-, I) \cong \textrm{Hom}_{\mathbf{K} (\mathcal{A})} (-, I)$; in particular, for any object $A$ in $\mathcal{A}$, $\textrm{Hom}_{\mathbf{D} (\mathcal{A})} (A, I) \cong \mathrm{H}_0 (\textrm{Hom}_\mathcal{A} (A, I))$.
See e.g. Stacks or any modern homological algebra textbook.
The only point that is not well explained in the literature is the notion of a partial derived functor; you can refer here instead.