REACTION_CLASS just makes that type of material a target for reactions (INORANICS)
best used for reactions that don't require complex materials for GET_MATERIAL_FROM_REAGENT like booze from a plant
aka best used for: turning a rock into furniture (INORGANICs)
INORGANIC is not a reaction class - FLUX, GYPSUM, and CAN_GLAZE are reaction classes, as are FAT, SOAP, TALLOW, MILK, CHEESE, and WAX.
HAS_MATERIAL_PRODUCT:TAN_MAT(this is the ID):LOCAL_CREATURE_MAT(target material location):LEATHER(material)
Strictly speaking, LOCAL_CREATURE_MAT:LEATHER is a single unit which specifies the material - it could just as easily be CREATURE_MAT:CAT:LEATHER, PLANT_MAT:MUSHROOM_HELMET_PLUMP:SEED, or INORGANIC:GYPSUM.
Ah I meant it is best used for INORGANICs like giving MARBLE [REACTION_CLASS:FLUX] and the others you mentioned, since [REACTION_CLASS:XXXX] is a custom ID that can be whatever you want.
as for LOCAL_CREATURE_MAT that was a direct rip from vanilla raws I just commented it slightly. But you are right, but HAS_MATERIAL_PRODUCT works better for GET_MATERIAL_FROM_REAGENT reactions then REACTION_CLASS because just slapping [REACTION_CLASS:BOOZE_PLANT] onto a plant then using
PRODUCT:100:5:DRINK:NONE:GET_MATERIAL_FROM_REACTION:plant:NONE will give you "generic drink"
where as using a MATERIAL_PRODUCT:BOOZE_MAT:LOCAL_PLANT_MAT:DRINK inside the plant then using
PRODUCT:100:5:DRINK:NONE:GET_MATERIAL_FROM_REACTION:plant:BOOZE_MAT
will work as it was intended.
I'm just bad at explaining things