Besides workflow, in the end it does not matter if you have one material with a lot of switches (which, if you let artists/inexperienced people handle them, can cause instance bloating. Protip: use ue4’s material analyzer to find duplicates)
So I generally make simple setups, with the minimal amount of variables needed, and replace textures/vars in the few instances that are created. Instead of relying on a lot of switches, I’ll make a new material when I need totally different results.
I blend grayscale textures (compressed to alpha, as it gives a much crisper result, to the point where I can lower their resolution without much loss in detail) and either multiply with color, or use luts.
I use multiplies, subtracts, Exp’s, and a few blend functions either for certain layers, or to adjust the end result, it really depends on the end result I need/am going for.
I rely more on uv-distortion than blending nowadays, unless the effect is up close and lasts a long time.
If an effect is short, snappy and/or small the player generally wont notice all the details anyways and then I am more concerned about the shape and animation.
If its up close and/or lasts longer I might blend in an additional texture to add some nice details to it, if its worth it. I’ll add quality/feature level switches so the additional/secondary texture can be disabled on low end hardware/older shading models.
layer-wise, generally I am the solo-vfx artist but two, three tops is generally enough. but since I tend to make materials more custom for each effect (and mainly rely on reusing for secondary and tertiary parts of the effect) it really depends on the effect if I need more layers.
how I blend, I already mentioned before.
You can use switches to change between different uv sets, but sometimes I just lerp between them as well. (can give really cool results over time if you did the uv’s of your mesh properly) this results in needing less unique materials under the hood and that one additional instruction wont be a problem.
My tip: dont rely too much on static switches, if you can save more than a few dozen instructions it might be worth it, else it might actually be cheaper to just lerp between different branches of the material.
I also heavily rely on vertex colors, and using that to control blending/uv channels/what branches are being used in the material.