For level data for instance, a type for each tile is crazy in most cases.
Surely that depends on the complexity of the tile? If it's just an image, sure - if it has an associated sound with it's surface, and physics properties for an object crossing it, then surely using an object would be a most excellent solution? They feel the need to make everything be an object, even at the expense of simplicity.
These would be the people who do not understand OOP. and it is difficult to see exactly what the code does because it's scattered across many files.
Again, someone without the faintest idea of the fundamental OO design principles of low coupling, high coherency. "Rotate" may make sense for some objects but not for others.
Yes. More specifically they would make sense for any object that implements whatever interface your rotate method is defined in. And the compiler will give you an error (as opposed to happilly compiling and then subsequently randomly crashing).