Universal generalization lets us deduce $P(c)$ from $\forall xP\left(x\right)$ if we can guarantee that $c$ is an arbitrary constant, it does that by demanding the following conditions:
1) $c$ does not occur in the hypotheses or the conclusion.
2) Any Skolem constant in $P(c)$ was introduced into the derivation strictly before $c$
The first condition makes sense because $c$ in the premises or the conclusion refers to a particular entity so that shouldn't be used as an arbitrary constant, however, I'm not sure about the case concerning the second condition, except for the fact that given this $c$ cannot be a Skolem constant.
So I have a question and a fact to confirm:
How exactly does 2) help promise the arbitrariness of $c$?
This implies that $c$ must be a constant introduced due to Universal Instantiation
Let us begin with $\exists yP(c,y)$, where $c$ is arbitrary. If we then apply existential specification, to get $P(c,e)$, $c$ is no longer necessarily arbitrary: $e$ was chosen for a particular, even if unknown, $c$. This could make the value of $c$ dependent on $e$. Then, if you apply universal generalization, you demand that $P(c,e)$ holds for every value of $c$, not just for some specific value, relevant to $e$. This is not always true. For example, consider the following steps:
$\forall x\exists y(x=y)$ (premise)
$\exists y(c=y)$ (u.s. 1)
$c=e$ (e.s. 2)
$\forall x(x=e)$ (u.g. 3) Error!
On the other hand, if the introduction of $e$ came before the introduction of $c$, as in $\forall xP(x,e)$, then, we know that $P(c,e)$ will hold for every value of $c$, not just for a specific $c$ that depends on a specific $e$.