You want to store the values the user selects in a separate table or you want to store the values the field has available in a separate table?
If you want to store the values the field has available then you can use CB Query Field and its Query select fieldtypes to pull the values from whatever database table (internal or external) you like.
If you want to store the value the user selects it's best to just join CBs table wherever needed to get the value from _comprofiler. Another simple alternative is to use CB Auto Actions and its query action to push the values from _comprofiler to your other table. The last option, most difficult of course, is to create a new CB fieldtype plugin to do exactly what you're wanting.
When are these methods invoked?
Review cb.core.php for usage examples. You don't need them depending on the type of field you're making. You can also extend existing fields to simplify your plugin even further. For example you can extend the select or checkbox field to simplify your code usage.