One problem in your scenario is, that C::B writes back the conf-file on closing, not while it is running.
So if user A opens C::B, then user B open C::B, changes something in the configuration and closes C::B.
All changes are now in the configuration-file, but now user A closes C::B, the changes will be overwritten by A's conf-files.
This can (of course) break B's configuration.
You can also store variables inside the project ("Build options -> Custom variables") ona per project or per target base.
Nevertheless, there is a workaround for the common conf-file problem (not really nice, but works here):
you can start C::B with different personalities (profiles) from console.
If your conffile is named
theConf.conf and placed in
/var/svn/projects/foo you can force theuse with the commandline (if C::B is in /usr/bin):
codeblocks -p ../../var/svn/projects/foo/theConf
Or in general with the path to the conf-file relative to the users configuration directory or C::B's install directory (in my example /usr/bin) ending with the name of the conf-file without the ending.
I hope I was able to make clear what I meant.
It's surely not the most elegant way, but it should work.
You can also
cd to the conf-files directory and call C::B with
codeblocks -p ../../`pwd`/<name_of_conf_without_extension>