[proofplan]
We prove both identities by double counting finite sets. First we count incidences between points and blocks, once by grouping over points and once by grouping over blocks. Then we fix a point $x \in X$ and count ordered pairs consisting of a second point $y \ne x$ and a block containing both $x$ and $y$, again in two ways.
[/proofplan]
[step:Count point-block incidences by points and by blocks]
Define the set of flags
\begin{align*}
F := \{(x,B) \in X \times \mathcal B : (x,B) \in I\}.
\end{align*}
For each point $x \in X$, the hypothesis on the replication number says that exactly $r$ blocks $B \in \mathcal B$ satisfy $(x,B) \in I$. Since $|X|=v$, counting $F$ by its first coordinate gives
\begin{align*}
|F| = vr.
\end{align*}
For each block $B \in \mathcal B$, the definition of a $2-(v,k,\lambda)$ design says that exactly $k$ points $x \in X$ satisfy $(x,B) \in I$. Since $|\mathcal B|=b$, counting $F$ by its second coordinate gives
\begin{align*}
|F| = bk.
\end{align*}
Equating the two expressions for $|F|$ yields
\begin{align*}
vr = bk.
\end{align*}
[guided]
The first identity is obtained by counting the same finite set in two different ways. The set being counted is the set of incidences, also called flags:
\begin{align*}
F := \{(x,B) \in X \times \mathcal B : (x,B) \in I\}.
\end{align*}
An element of $F$ records the data that the point $x$ is incident with the block $B$.
We first group these flags according to the point $x$. For a fixed point $x \in X$, the replication hypothesis says that exactly $r$ blocks $B \in \mathcal B$ are incident with $x$. Thus each of the $v$ points contributes exactly $r$ flags. Therefore
\begin{align*}
|F| = vr.
\end{align*}
We now group the same flags according to the block $B$. For a fixed block $B \in \mathcal B$, the definition of a $2-(v,k,\lambda)$ design says that exactly $k$ points $x \in X$ are incident with $B$. Thus each of the $b$ blocks contributes exactly $k$ flags. Therefore
\begin{align*}
|F| = bk.
\end{align*}
Both computations count the same finite set $F$, so their values are equal:
\begin{align*}
vr = bk.
\end{align*}
[/guided]
[/step]
[step:Fix one point and count its co-incidences with all other points]
Fix a point $x \in X$. Define the finite set
\begin{align*}
P_x := \{(y,B) \in (X \setminus \{x\}) \times \mathcal B : (x,B) \in I \text{ and } (y,B) \in I\}.
\end{align*}
Counting first by $y$, for each $y \in X \setminus \{x\}$ the two-element set $\{x,y\}$ is contained in exactly $\lambda$ blocks. Since $|X \setminus \{x\}|=v-1$, this gives
\begin{align*}
|P_x| = \lambda(v-1).
\end{align*}
Counting instead first by $B$, exactly $r$ blocks are incident with $x$. For each such block $B$, exactly $k$ points are incident with $B$, one of which is $x$, so exactly $k-1$ choices of $y \in X \setminus \{x\}$ remain. Hence
\begin{align*}
|P_x| = r(k-1).
\end{align*}
Equating the two counts of $P_x$ yields
\begin{align*}
\lambda(v-1) = r(k-1).
\end{align*}
[/step]
[step:Conclude both parameter equations]
The first double count gives
\begin{align*}
vr = bk,
\end{align*}
and the second double count gives
\begin{align*}
\lambda(v-1) = r(k-1).
\end{align*}
These are precisely the two asserted parameter equations.
[/step]