The modules that you create for a product (lets call it Product-A) needs a slug name which needs to be unique.(Lets call it cpo_length) When you save the module for the first time, with DB checked, it creates a global attribute(option), which is called cpo_length, which resides in the database.(the list you se in cpo-options on the wp-dashboard) At the sametime it also linked with the module (Se sync ID in module), The module now has control over that attribute/option.
When you duplicate a product(Product-B) with that module, it is now also linked to the same attribute/option: cpo_length_a, but as an instanced link. The copy process takes into account the origin of module option.
cpo_length_a is now working on both products.
If you open the module in Product-B and check the DB and press save, Product-B now recreates the link as if was the first time, reassigning a sync id, with no regard to product-A. product-A is no longer synced/attached/linked to cpo_length_a
If you need to change a module in Product-B after copying, make sure to rename the slug: cpo_length_b before you save to the db. This way the module creates a new unique option: cpo_length_b and linkes that to the module in product-B, without touching the original cpo_length_a. Remember to change the calculation form in product-b module, to use the new option: cpo_lenth_b
Hope that makes sense ??