The temperature is calculated using a basic formula:
Core temp = Throttle temperature - sensor output
You sensors don't actually output an absolute temperature, but a temp relative to the throttle temp. You will often hear the term "Tj Max" or "Tjunction Max" which refers to this throttle temperature. The problem is nobody can be absolutely certain what the throttle temperature is, so different programs use their own values based on "estimates" in documentation or testing (most the former, Real Temp usually the latter when possible). If that throttle temp is assumed 5C different from one program to another, the temperature will always be reported as 5C different. What never changes between programs is the distance to Tj Max being outputted by the sensors, and keeping this above 30C will ensure stability in all but the highest overclocks.