You're missing that "predicate" in logic refers to a formula in the language with some free variables that denote parameters. For example "$x < 1+1+1$" is a predicate in the language of arithmetic. In any given model we say that a predicate is satisfied by an object tuple iff it is true when that tuple is substituted in place of the free variables (in some specific order of variables). In the natural numbers "$x < 1+1+1$" is satisfied by $0,1,2$.
Defining ZFC as a formal system is no problem in any meta-system that is capable of standard string manipulation, because the axioms of ZFC are defined syntactically (since "predicate" there refers to a formula in the language of ZFC).
Now in the meta-system we can also talk about the collection of objects in a model that satisfy a predicate. For predicates with more than one parameter, this collection is often also thought of as a relation. Note that there may be collections in the meta-system that do not correspond to any predicate.
In particular, any uncountable model of ZFC will have an object $S$ such that the collection of all objects $x$ such that "$x \in S$" is satisfied does not correspond to any predicate over ZFC, namely there is no predicate that is satisfied by exactly the same objects. Same goes for relations and functions in a model of ZFC, which may not correspond to any predicate over ZFC.
Furthermore, there are predicates that do not correspond to any object in any model, such as the Russell predicate "$x \notin x$". Those that do do so precisely because of the axioms of separation and replacement, which are there to reify some predicates (meaning to make them objects). Russell's paradox shows that not all predicates can be reified in classical set theory, which is the same as saying that unrestricted comprehension is invalid.