Joining 2 Armatures and keeping the weights
Weight is a property of a Vertex Group, it's not about rigs but about meshes. 

Every single vertex will be moved by a bone if the bone has exactly the same name of a vertex group to which the vertex has some weight, and the whole mesh must have an armature modifier pointing to the rig. 

When you merge two meshes, all vertices retain their weights, but if some vertex groups have the same name, some will be renamed with the ".001" suffix, and they will stop to be influenced by the bone. 

The same can happen if you join two armatures which have some bones with the same name. 

So you have to check the right correspondence between bone names and vertex groups names, and eventually rename some bones to avoid overlapping (if you rename a bone in a working model, its vertex group will be automatically renamed in the correct way). 

If every datablock has different names, everything will work well after joining. 

Don't forget to apply rotations and scale (Ctrl + A) to all objects before joining.