Let $A^c$ and $B^c$ be the complements of $A$ and $B$ respectively. We know that $|A \cap B| = 0$, that is, $A$ and $B$ have no elements in common, which implies that $A \subset B^c$ and $B \subset A^c$.
So $A^c$ contains all elements, except $A$. $B^c$ contains all elements except $B$. But $A^c$ contains $B$ and $B^c$ contains $A$, so $A^c \cup B^c = Z$, thus $|A^c \cup B^c| = 100$.
Your reasoning is not correct, however. If you mean that $A$ is all dogs in $Z$ and $B$ is all cats in $Z$, then there are 80 other things in $Z$ which are neither cats or dogs, say elephants. Thus $A^c$ is the set of all cats and elephants and $B^c$ is the set of all dogs and elephants.
If you mean that $A$ consist of only dogs, but not necessarily all dogs in $Z$, $B$ consists only of cats, but not necessarily all cats in $Z$, and $Z$ contains only dogs and cats, the situation is a bit different. Then three things are possible: $A^c$ contains dogs, $B^c$ contains cats, or both.
As for the b-part. We know that $|A^c| = 90$ and $|B^c| = 90$. As per above, we know that $A \subset B^c$ and $B \subset A^c$, but $A$ is not part of $A^c$ and $B$ is not part of $B^c$. However, "the rest" of $A^c$ and $B^c$ is the same, so $|A^c \cap B^c| = 80$.
Using the cats, dogs and elephants: $A^c$ is all cats and elephants, $B^c$ is all dogs and elephants. The elements in common are the elephants.