++ for point c).
It's easy to correct and quite a pain in the neck each time !
This has been discussed in other threads. I suspect that the reason it's the way it is is because developers have been using "Build Targets" in two different ways.
One way (the way I suspect you and I are both used to) is to specify compiler and linker options, such as "Debug", "Release", "Profile", "Optimized Debug", et al. Used this way, it would be very unusual that a file wouldn't be added to all build targets.
The other way, which I've seen the project for Code::Blocks itself use, is to treat Build Targets like sub-projects. Much like how projects within a workspace behave. So you would have Build Targets like "GUI", "Backend", "Networking", "Plugins", and so on. I'm not used to that, but I can see how with such a scheme you would almost always want to add a file to only one or two build targets. Although I don't know why this approach would be better than having several projects within a workspace.
I suspect the solution to make all parties happy would be to add a checkbox on that dialog specifying "Select all build targets by default". We could check that once and not worry about it again.