The 'given name' of a material is not what the game displays it as, but the ID it's given when the material template is called. [USE_MATERIAL_TEMPLATE:EXTRACT:PLANT_EXTRACT_TEMPLATE] translates roughly into [call material template:for the material ID'd here:and use this particular template]. And then the ID you give in that line is what you use when manipulating that material (you can have numerous materials using the same template in a creature/caste/subcaste or plant, they just have to have different IDs within the creature or whatever). You've got the general idea, you just need to communicate it to the game.
How would the smelter reactions look like?
[REACTION:CASTE_IRON_EXTRACT]
[NAME:Caste Iron Extract]<This is the name that comes up in the workshop menu or in the job manager. Usually it's phrased as a command.
[BUILDING:SMELTER:NONE]
[REAGENT:extract:1:LIQUID_MISC:NONE:PLANT_MAT:IRON_ROOT:EXTRACT]
[REAGENT:container:1:NONE:NONE:NONE:NONE]
[CONTAINS:extract]
[PRODUCT:100:1:BAR:NO_SUBTYPE:METAL:IRON][PRODUCT_DIMENSION:150]
[FUEL]
[SKILL:SMELT]
The CONTAINS line is probably a workaround for the old issue of reactions not seeing things in containers. If you ask for "extract" and forget to ask for an "extract"-containing container as well, dwarves won't treat extract and container as a single item (as a human would), and they'll get hung up on not being able to transport just the liquid.
CONTAINS must refer back to the reagent that the container contains. In many vanilla reactions reagents are labelled as A, B, C, etc. as the game doesn't display the reagent names. If you're writing your own reactions, always assume that the game will display whatever label you apply to a particular reagent.
LOCAL_PLANT_MAT is used for, I dunno, referencing a plant material that's been brought up once already. Since this isn't the case here, 'PLANT_MAT:specific stuff' is used instead.