Seeing as all the card template does is refer to the data page as a template, it seems like an unnecessary step compared to simply referencing the data page directly. Is there any good reason to have that intermediate card template?
This is simple data-view distinction. Data is responsible for storing data while {{Card}} is responsible for displaying cards in various modes. Okay, technically Data page (in my implementation) also displays the card, by default in
data page mode.
Another thing: I prefer if Data pages receive up to one input parameter. If a new card is introduced this is the only somewhat difficult part that a wiki editor needs to create. If there are mandatory {{{2|}}} {{{3|}}} etc. parameters to handle them in various modes it makes difficult to create these pages.
I agree, though we might end up protecting those templates anyway, as they make it way too easy for a vandal to globally, albeit temporarily, wreck the Wiki.
A wiki is always can be target of vandalism. My experiences that vandals usually delete/modify the main page or insert spams with irrelevant links, or make tiny changes like changing "Skill" of a card to some garbage. These don't affect templates. But you can protect sensitive pages so only registered or power users can modify them.
I actually removed Image Only mode. I prefer the <card> tag for image display purposes, as it's more extendible - for example, letting it float to the left or right, which is a must in featured articles. Adding this functionality to the card template would be inconsistent with its purpose and parameters
All is matter of approach. I made Card template for displaying single cards and not card pairs. With this approach it makes sense to use it even to display simple card images because even Image Only mode uses some information of the data page (link target, display name, image filename). Secondly, I prefer isolating responsibility and building complex thing of simple "bricks". So Card Pair uses Card to display pair of cards and both templates have simple source and clean purpose.
Your approach is different, which I don't take worse or better, it's just different. If we say that Card template is responsible for displaying cards in pairs, then you are right, displaying simple images would be unnecessarily difficult by this template. But in this case some logic are duplicated: <card> needs also to determine target link, display name and card image filename from some source.
And you are right, I would not add floating and such to the template. You cannot prepare all of the possible needs so I would use <div> instead. Or specific templates.
Check this, for example (btw, I wish to migrate this template, too). How would you prepare for these image placements in <card>?