Fragment of ZFC to prove first-order completeness theorem If I am not mistaken PRA or an even weaker theory suffices to develop the syntactics of first-order logic (at least for finite or countable languages). 
To develop the semantics of first-order logic sets are assumed. I am wondering what fragment of ZFC is necessary to (1) develop the semantics of first-order logic, (2) prove the completeness theorem of first-order logic.
 A: Very little.
First of all, an important fragment of the completeness theorem doesn't even need "big" sets at all. Consider the "countable completeness theorem":

$(*)$ If $T$ is a consistent theory in a countable language, then $T$ has a countable model.

This can be appropriately expressed in the language of second-order$^*$ arithmetic, and in fact is quite weak: over the base theory RCA$_0$, which corresponds roughly to "computable mathematics," the principle $(*)$ is equivalent to weak Konig's lemma (wkl) - the statement that every infinite binary tree has an infinite path. One direction - proving $(*)$ from RCA$_0$ + wkl (this latter system is called "WKL$_0$" - note that "WKL" denotes a stronger theory, hence my usage of "wkl" above) because over RCA$_0$ the principle wkl lets us prove (the appropriate form of) Lindenbaum's lemma, and modulo that the usual Henkinization proof is entirely effective.

Now what about the more general completeness theorem?
Well,there's an interesting split: we have on the one hand the "well-ordered completeness theorem"

$(**)$ If $T$ is a consistent theory in a well-orderable language, then $T$ has a well-orderable model,

and the "full" completeness theorem

$(***)$ If $T$ is a consistent theory, then $T$ has a model.

The principle $(***)$ is not provable in ZF - it requires a small amount of choice (see here). The former principle, however, is provable in ZF; looking at the usual Henkinization argument, we see that it consists of:


*

*Pass from $T$ to a complete consistent theory $\hat{T}$ (Lindenbaum's lemma).

*Pass from $\hat{T}$ to a larger complete consistent theory $T^+$ in an expanded language, with the witness property (Henkinization).

*Argue that the term model of $T^+$ is in fact a model of $T^+$, and hence its reduct to our original language is a model of $T$.
It's not hard to check that this goes through in the theory KP + Inf (the axiom of infinity needed to form sets of finite sequences). This is not optimal, but it's a good first approximation. Meanwhile, by the same reasoning KP + Inf + the well-ordering theorem proves $(***)$.
Incidentally, the development of logic inside KP + Inf and related weak fragments of ZFC has been intensely studied - Barwise has an excellent book which treats these issues (among others). Of particular interest I think is the relationship between weak fragments of ZFC and logics beyond first-order logic, specifically (fragments of) infinitary logic $\mathcal{L}_{\infty\omega}$ - see for example the Barwise compactness theorem.

A minor obnoxiousness: although it's called "second-order arithmetic," everything here is first-order in the sense of the underlying logic. In my opinion, "second-order arithmetic" should really be called "two-sorted arithmetic" (I'd also be happier with "analysis," which has been used this way historically, but not quite as happy since that has connotations of its own) but unfortunately the name has stuck.
