There is a separate sensor embedded in the CPU. The bios can apply an offset to what this sensor reads so it can change when you update the bios. If you install the same CPU in two different boards from two different manufacturers, you can end up with a difference in reported temperatures in the bios.
The temperature displayed by this sensor is not the same as Tcase. The only correct way to measure the Tcase temperature is to cut a groove into the top of your CPU and mount a thermocouple at the geometric center of the IHS. The bios temp is more like a simulated, stab in the dark, approximation of Tcase.
The core sensors are designed to be more consistent. If they get stuck or read too high or too low in one board, they should do exactly the same in a different board. Too bad Intel didn't put a few more pennies into the quality of the core sensors that they use. The Core i7-900 series sensors are excellent, the Core 2 65nm sensors are pretty good when you use the correct TJMax and the Core 2 45nm sensors are horrible. They have some significant issues. They can get completely stuck at lower temperatures. They have slope error which means the further you move away from the calibration point, the more they can start reading either too low or too high and TJMax seems to be all over the place. TJMax seems to vary by as much as 10C or maybe more from core to core on the same Quad core CPU. Getting 100% accurate temperatures out of most of these sensors from idle to TJMax is impossible.