$(A_{\alpha})_{\alpha\in B}$ a family of sets indexed by a set $B$. Is $\Pi _ {\alpha\in B} \ A_{\alpha}$ a set? I can see that it is a set if $A_{\alpha}=A \ \ \forall\alpha$ because in that case the product is a subset of the power set ${\cal P}\ (A\times B)$. As far as I understand, the axiom of choice only says the product is not the empty set, and it doesn't say if it is a set at all. Or am I wrong?

The standard definition of $(A_\alpha)_{\alpha \in B}$ a family of sets indexed by a set $B$ is that one is given a function $A$ with domain $B$ so that for $\alpha \in B$ we understand $A_\alpha$ as $A(\alpha)$. Then, yes, the product is a set. The function $A$ itself is an element of the powerset of $B \times \text{ran}(A)$ (where $\text{ran}(A)$ is the range of $A$) and the product $\prod_{\alpha \in B} A_\alpha$ is by definition the set of functions $f$ with domain $B$ having the property that $(\forall \alpha \in B) f(\alpha) \in A(\alpha)$. As such, one proves that the product exists by applying the comprehension axiom to the above defining formula observing that any such $f$ will be an element of the powerset of $B \times \bigcup \text{ran} A$. [And yes, the Axiom of Choice merely says that the product is nonempty if all of the $A_\alpha$ are nonempty.] 


Just to further clarify Thomas' correct answer, there is no such thing as a family of classes. A family of sets can be indexed by a proper class, and then is itself a proper class, but their is no family that has proper classes among its $A_\alpha$'s. Note however that a family of sets that is indexed by a class does not have a product since the elements of the this "product" would have to be proper classes. But only sets can be elements of something. Proper classes are not elements of anything. In fact, in ZFC (ZermeloFraenkel Set Theory plus Axiom of Choice) classes only exist in the form of formulas that define classes. 

