SOLVED - kind of 
I think I’ve got a faulty unit. I bought 2 so was able to run a test:
My problems above were with my first unit (bed 3 ir blaster). It’s discovered, interviewed, learns codes all no problem
Firstly I changed my naming system: originally I gave it the friendly name: bed 3 ir blaster, then when I referenced it in scripts I put underscores between the words. But, taking note of @jellytotz advice above, I deleted the device and re-paired and renamed it bed.3.ir.blaster
This made no difference! haha! BUT I decided to stick with this naming system just in case it was causing an error.
I’ve then gone through the process with a second unit and everything works just fine: I wrote this script and triggered it: working, added a button to a dashboard with call service Scripts: bed.1.ir.blaster BED 3 TV mute and it works 
So, next to test the first unit. In order to test if it was actually outputting an IR signal, I duplicated the working script, altering the device name obviously, and fired it. No luck. So next I put the known working unit in learn mode and triggered the test unit to send again. No luck, the known working unit is not picking up any IR signal from the other unit.
My conclusion is a faulty unit - it can receive but not send. I’ll contact customer support later and see what they say and report back.
Seeing as some folk here are winning and others are losing with exactly the same scripts, I reckon there might be a bad batch out there…
This is what I’ve got working:
Hope this is of some help to someone.