Question to answer: are there two omissions in the problem statement which need to appear? Namely, $C$ must be a set with more than one element, and $A$ must be non-empty.
The implication that $C \ne \emptyset$ isn't particularly necessary. Why? Suppose $C = \emptyset$. But then you don't have functions $g,h : B \to C$ that your question supposes, if $B \ne \emptyset$. That is, there are no functions from nonempty sets to the empty set. And we can't have a function $f : A \to B$ if $B = \emptyset$ either, for the same reason, if $A$ is nonempty.
Thus, if $C$ is empty, so is $B$, and thus so is $A$ (and yes, there does exist a function $\emptyset \to \emptyset$).
Okay, fine. Does the proposition still hold? Yes. We note: any function $f : \emptyset \to \emptyset$ is unique. Moreover, it is trivially a bijection (the cardinality of its domain and codomain are equal). Thus the proposition absolutely holds, as $f \circ f = f \circ f$ holds trivially, and gives $f=f$ whenever $f$ is invertible (which it is here).
Thus, specifying the details for whether $C$ or other sets are empty isn't necessary. They can be accounted for, and while they require some vacuous reasoning, everything still holds. The most they would affect is the existence of the functions $f,g,h$ in question and give restrictions on the sets $A,B,C$ in question.
Some further reading:
- Existence of function $\emptyset \to A$ (which can be empty or not): link
- Uniqueness of that function: link
- Nonexistence of function $A \to \emptyset$ for $A$ nonempty: link