They say that they were originally using alpha testing, but then switched to blending with the blend mode of:
Hm, they use alpha testing for the normals only.
result.rgb = src.rgb * src.a + dst.rgb * (1-src.a) result.a = src.a * factor + dst.a * (1-src.a)where factor is set to the material's spec power. Obviously this doesn't work if you want the spec-power to vary across the decal though.
N.B. this relies on EXT_blend_func_separate.
This one doesn't mention deferred lighting, so it doesn't deal with your spec-power blending issue. In his level editor, he's pre-generating a world-space normal map per decal instance (which is a mixture of the underlying geometric normals, and the decals tangent-space normals), and saving those texture alongside the level.
I wonder how they did it here (that's what I'm looking for): http://blog.wolfire....tor-part-three/