1. If the assembly reference IDs are the same between two components, they can be replaced manually and will automatically replace. Some companies originally family table their fasteners only to break up these family tables into individual Pro/E files. They do this to get better performance out of Pro/INTRALINK. Because all components came from the same family table, they all have the same geometry IDs and can interchange quickly and easilly.
2. Pro/ENGINEER Wildfire released internal component references. If you download any bolts from the on-line PTC PartsLink library, these components already have component placement references inside them. If you drag and drop these components on top of a hole where you want them to assemble, most of the time they assemble themselves. It is still new technology and the auto-assembly hit rate should go up as the technology matures.
3. Interchange assemblies can be used to make totally dis-similar parts/assemblies interchangable. Most long-term Pro/E users complain about interchange assemblies being hard create. But I have never had any problems creating or using them in the latest releases of Pro/ENGINEER. Pro/INTRALINK will check out the interchange assembly and all the associated assemblies if you request to check out all dependencies.
4. Layouts can be used to maintain references between interchangable components. If a series of components have identically named placement references ('asm_axis', 'mate_datum', etc), a layout can be used to capture these references for interchangability. Please test this, but I believe the layout method only checks out the assembled component and the layout.
5. Another fairly new technology (2000i2) is the inheritance feature. Inheritance features are one-way associative links. It is like a copy geometry, only better. They were created to replace family tables with single instances (Cast part vs a machined casting for example, or a sheetmetal bent state vs flat state). However, they are interchangable components.
6. There is always the manual replace method. It may be slow, but if it is a one-time deal, it may be faster
If your sub-assemblies are similar, use Pro/INTRALINK to copy them to new names. Then make your modifications to the new sub-assemblies. If the IDs of their assembly refernces don't change, the will interchange manually without any effort. If the IDs of their references do change, use one of the methods described above to interchange them quickly and easily.
Simplified Reps do help performance. But they only affect the ammount of required RAM while the model is in session. They have no affect on the interchangable components in your assembly. Use Simplified Reps in conjunction with skeletons to get even better memory utilization.
For example, if you include a component in a simplified rep, but not it's parents, Pro/ENGINEER will maintain the parent components in memory even if they are not shown on the screen. If your components are assembled to the skeleton where possible, it reduces the number of required components in memory when using a simplified rep.
If you want to automate the replacement of your similar components, you can use Pro/PROGRAM. The coding changes according to the component type (family table, interchange group, etc). So use Pro/HELP and the Knowledge Database as references. The Knowledge Database has many how-to documents for implementing all the above methods.
Sorry for the long winded message. Hope some of this helps.