Right then!
I have installed version 4.2.1 on another machine and it (nominally!) works - more on this below. Therefore I conclude that part of the OS on the first machine I tried and which gave the CreateProcess problem has got mangled. In fact, I have seen this before with XP - strange, illogical things start creeping in. I will repair over the weekend and see if that makes a difference. Other than that, a fresh install. (Oh joy!)
I say 4.2.1 nominally works. I can build the "Hello world!" program from the command line, no problem. But when I try to build it from C::B, I get loads of weird linker errors: undefined references to __gxx_personality_v0, _Unwind_SjLj_Register, _Unwind_SjLj_Unregister, etc. The last ones puzzle me big time! I have absolutely definitely installed both the core and g++ dw2 variants. (Very sure. Double-checked, repeated install.) But the linker seems to be looking for bits from the other sjlj variant of version 4.2.1? Or might it be from 3.4.5 which co-exists on the machine but obviously in a different directory. Very sure I have the toolchain exe location/filenames correct. Nonetheless the program builds successfully from the command line!
Doh!