The only way this is going to work cleanly is to just add new inputs to CB Activity. Using a popup means you're going to have to interrupt the form submit process, which CB Activity is not tested with so you could break the form behavior, but you're welcome to try that approach. As for adding new inputs the following triggers can be used to do this, which is also the triggers you'd use to output your custom JS for the popup.
Edit
Code:
$_PLUGINS->trigger( 'activity_onDisplayStreamActivityEdit', array( &$row, &$buttons, $viewer, $stream, $output ) )
New
Code:
$_PLUGINS->trigger( 'activity_onDisplayStreamActivityNew', array( &$buttons, $viewer, $stream, $output ) )
Doing a "return" in your auto action with your new inputs should insert them. It does not enforce any HTML structure when doing this so you'll need to either mimic existing HTML of other inputs or create your own however you want it displayed.
As for when to save this information to your external storage you'd use the below.
Validate: Before Update
Code:
$_PLUGINS->trigger( 'activity_onBeforeUpdateStreamActivity', array( $stream, $source, &$row, $old ) )
Validate: Before Create
Code:
$_PLUGINS->trigger( 'activity_onBeforeCreateStreamActivity', array( $stream, $source, &$row ) )
Save: After Update
Code:
$_PLUGINS->trigger( 'activity_onAfterUpdateStreamActivity', array( $stream, $source, $row, $old ) )
Save: After Create
Code:
$_PLUGINS->trigger( 'activity_onAfterCreateStreamActivity', array( $stream, $source, $row ) )