ZF
In ZF, we cannot construct as an object a proper class, such as "$\{ x : x \notin x \}$" and "$\{ x : x = x \}$", which are technically not even valid to write down. The reason is that the axioms of ZF do not permit constructing them, since the axiom of specification only allows you to construct a set by specifying it as the elements of some previously constructed set which satisfy some formula. And the axioms of ZF were designed that way because if you could construct either of these two sets, you could then prove a contradiction using the axioms of ZF, which would make ZF useless.
$
\def\eq{\leftrightarrow}
$
But ZF, like any first-order theory, can be equipped with what is called full abbreviation power or definitorial expansion. Applied to ZF, it allows us to create a new predicate symbol $R$ defined by $R(x) \equiv x \notin x$, for example, and we can now prove (in ZF) that $R$ does not correspond to a set in the following precise sense:
$\neg \exists x\ ( \forall y\ ( R(y) \eq y \in x ) )$.
This is the technical meaning when people say that the Russel class does not exist. After all, "Russel class" is not a phrase that can be expressed in ZF. However, if you consider proper classes as simply the predicate symbols or their defining formulae as mentioned above, then you could say that ZF can handle classes in a limited way, namely they can be quantified over but not manipulated as objects.
Some common examples include the class of graphs, the class of models of a theory, the class of ordinals and the class of fields. One can say "For every graph $G$, either $G$ has an odd cycle or $G$ is bipartite." where "graph", "has an odd cycle" and "bipartite" have to be translated to formulae and cannot be represented by sets. Of course, "For every graph, ..." becomes "$\forall G\ ( graph(G) \to \cdots )$", and likewise for the existential quantifier. One can see that various useful meta-theorems for quantifiers hold, such as that "Not every graph is ..." is equivalent to "Some graph is not ...".
MK
However, if you want to actually talk about sets and classes separately, MK is essentially what you will get by adding to ZFC the ability to construct any arbitrary class (of sets) defined by a first-order formula over ZFC as an actual object. Formally, we can have two sorts called "set" and "class", so that we can state the axioms for ZFC for sets. (Or we can have just one sort but also a predicate for "sethood".) There are two main points of note:
A class only contains sets as members. So there is still no class of classes. But there is trivially a class of all sets, and classes form a boolean lattice under inclusion with a top and a bottom.
The usual axioms of ZFC apply to sets, not classes. So there is no such thing as the powerclass. However, given any class $C$ one can construct the class of all sets that are subsets of $C$.
MK is strictly stronger than ZFC, since MK proves the consistency of ZFC, but MK is easier to use than ZFC precisely because we can talk about classes directly.