When you build a firmware the MD5 hash is computed on the host which builds it. It is then displayed in your browser:

MD5 from the server

As we have a secure connection (https), there is a guarantee that the hash you see in your browser is the one generated by the builder.

Then once you have downloaded the file you can check on your local system that the file has not been damaged in the transfer by running md5 on your computer. As the whole session with the builder is encrypted, it is very unlikely that something happens, but you never know: you may have an incomplete transfer or whatever.
On Linux or Mac you can run md5sum / md5 on the command line:

Local MD5

I am not a Windows person, so I can't advise but there are various utilities for performing MD5 checks (fciv, certutil from the command line as well as some GUI tools)

Now this 128 bits checksum also uniquely identifies a firmware, as the probability to have the same checksum is close to 2^128 so about zero for this purpose. This is why I am logging the build MD5, that way from a firmware file I can go back and find the build properties.

That's the all story!

Two remarks though:
- For the tech-savvy people, I appreciate that MD5 checksums are no more 'cryptographically safe' these days, it would be possible to craft a firmware file having the same signature as another. Although I could (and I probably will) use SHA-2, it is not really relevant for this purpose.
- For the creative people who will asks: "can I use this checksum to retrieve my builder settings?", the answer is no.
It is just a log file, not a database. And even if it would be in a database, I have not designed the builder to support this. The data structure used to pass parameter between the WebApp in the browser and the backend builder changes as I introduce new features so it wouldn't be sustainable.

I don't do an autolevel since I just leave the head x/y motors free so I can move the head and calibrate by eye/gauge feller. So far all works. Ofc it should be pretty easy to add a couple more steps to move the head.

Not really, this is mostly for custom Z offset while I'm working on a similar routine as the "bed leveling" done in Cura 15...and also I can't do the Z homing at the bottom. I find it highly inconvenient.

This is my work in progress in ultralcd.cpp (has to be read from the bottom up):