An estimate infers that you are making a guess based on the best possible data. A mechanic estimates it will take 3 hours to fix your car based on what he knows, but that estimation may change if new info becomes available.
In your analogy, we could estimate the weight of a particular mountain based on it’s approximate size and the make-up of its rocks, but it’s still based on evidence and data.
A guess (and a guesstimate) infers that you simply don’t have the data you would want to make an estimate. If someone asked me to estimate how long it would take to debug this problem I’m working on right now, I would have to guess because I have no idea what is causing it in the first place.
Estimate – smaller margin of error
Guesstimate – large margin of error