So, Hatcher defines a covering space as
A covering space of a space $X$ is a space $\tilde{X}$ together with a map $p:\tilde{X}→X$ satisfying the following condition: Each point $x\in X$ has an open neighborhood $U$ in $X$ such that $p^{−1} (U)$ is a union of disjoint open sets in $\tilde{X}$ , each of which is mapped homeomorphically onto $U$ by $p$.
Also he says
We allow $p^{−1} (U)$ to be empty, the union of an empty collection of sheets over $U$ , so $p$ need not be surjective.
But then, if the definition is satisfied for every $x \in X$ wouldn't that mean that $p$ maps $\emptyset$ onto some $U$? That doesn't make sense! And if it just means "for all $x \in p(\tilde{X})$" then why say "for all $x \in X$"?
Can someone please explain this to me?
No, there is no problem and this is why: for every $x\in X$ we need a neighborhood $U$ such that $p^{-1}(U)=\sqcup_{i\in I}\widetilde{U}_i$ for some open sets $\widetilde U_i$ in $\widetilde X$ and some index set $I$. In the case that $p^{-1}(U)$ is empty, we are taking the index set $I$ to be the empty set, rather than having $I$ contain some elements and each $\widetilde U_i$ be the empty set. It's therefore vacuous that each $\widetilde U_i$ map homeomorphically onto $U$, since there are no $i\in I$ to begin with.
As for the second part of your question, you're right that saying "for every $x\in p(\widetilde X)$" would be just as correct. It really just doesn't matter and I guess in the author's head, saying "for every $x\in X$" looks nicer.