Tutorial:Rocket Assembly
Most people use sub-assemblies for commonly used part-groups like boosters, but they can do so much more. The trick is to place an arbitrary and unneeded part as the first part when building a module intended to be used as a sub-assembly. Once the module is complete, pick up the piece you intend to attach to whatever ship you are building later, and drag the whole thing to the sub-assembly window. I recommend using an info mod like kerbal engineer or mechjeb to allow you to see important stats like weight. If you design each module to meet an exact weight requirement, let's say 5 tons, then you can place those modules on your new vessel in a radial pattern without having to worry about center of balance being thrown off. You can add ballast to modules to achieve the necessary weight. You could have a 5-ton rover module, a 5-ton lander module, and a 5-ton satellite module (probably with several satellites). As you can see, this allows for greater diversity while building your main vessel without having to rebuild each item every time. Creating a variety of modules at different weights should allow you to build ships for just about any occasion at your whim.