I would call this person a hypocrite:
A hypocritical person.
‘the story tells of respectable Ben who turns out to be a cheat and a hypocrite’
A hypocrite is someone who applies rules only when it suits them. Most commonly, they allow themselves more freedom than others.
edit While it is usually a form of selfish behavior (allowing yourself more freedom than others), hypocrites can also allow someone else more freedom than others, without being particularly selfish. Both are considered hypocrisy.
In your case, the rule being applied hypocritically is "being allowed to criticize someone". He allows himself to criticize others (and will argue to others that he is allowed to), but he does not allow others to criticize him (and will argue to others that they are not allowed to).
If you want a way to address what he is doing without calling him out personally, you could use double standard
double standard (noun)
A rule or principle which is unfairly applied in different ways to different people or groups.
‘the double standards employed to deal with ordinary people and those in the City’
A hypocrite inherently uses double standards.
However, stating that someone is using a double standard is a more polite way of calling them a hypocrite. The latter is considered a direct critique of the person's character, as opposed arguing against what he is currently doing.
Consider the same difference between "You took my stapler" and "You are a thief". Technically, both are correct. But the former is a softer approach that does not condemn the person, but rather a single action.
I want to highlight here that hypocrisy can also apply in cases where there are different topics being discussed, even if they are applied to the same people.
Imagine a single person saying both of these things:
People should be allowed to carry a registered firearm. It is up to that person to use their firearm responsibly.
People should not have any (illegal) drugs on their person. You can't make sure that they won't be reckless, e.g. driving while under the influence.
In the first case, he argues that people should be considered capable of being responsible. In the second case, he argues that people should not be considered capable of being responsible.
This is still a form of hypocrisy. Even though this person is applying the rules to the same set of people (everyone); the arguments he uses to justify both positions are contradictory.
Hypocrisy can be caused by selectively applying a rule; or it can be caused by trying to apply two different rules that are justified by contradictory arguments.