I compared them under the same circumstances, the only difference is the rotation(it looked like this when converting the file).
The md2 file does not give me bones with which I can relate an external object to the model, it is probably because of this that it offers more FPS. That is, it gives me only one bone, while the .X file gives me all the bones of the rigg, it is probable that the md2 file only works with the positions of the vertices, without relating bones, like the sydney.md2 model.
Interestingly, it is also possible to create different animations and call them by name (as in the hello world example in the documentation).
You can call it by the names already created or simply with its name inside quotation marks, for example node->setMD2Animation("stand");
I did a quick test so I experimented with a single texture(see the axe).
irrlicht needs a functionality that lets you choose the initial and final frame of the loop, without having to restart the animation when modifying this value (as it happens at the moment), so it would be easier to work with different animations and their intervals.
.x

.md2

(convert file software: fragmotion)