A pixel is a point sample. A point sample has no size (read a pixel is not a sqare3). The pitch between samples on a digital display device unspecified. When you make a image 800 pixels wide you get a randomly large image.
The technical reason is that: Images degrade on anything but 1 pixel = 1 pixel ratio. Beyond this the operating system does not even know how big the monitor is. So what happens is your shipped with x samples and the monitor displays those x samples at x samples in its display how large that happens to be. This is how computer imaging has worked for 50 years.
This unitless system is what you want for most situations. Since the opposite of this would be all systems would be scaling images left and right*. Imagine how frustrated a user with a mobile device would be if your image was shown at the same size as on a 21 inch monitor. In reverse the guy with a 50 inch monitor is not going to be happy with images that scale as big as a mobile device.
So at the end of the day:
- Even if you specified a image x inches wide,
- and the monitor and software would be able to comply with this.
You would just end up with a mess because some monitors would be displaying only very few pixels at that size while others couldn't span that size. And nearly nobody would be happy. Forcing me to view a image at a specified physical size makes just about as much sense as trying to force me to switch to a different amount of pixels on the monitor. As this would mean id have to buy a new monitor for every webpage, and that is not going to happen.
* And apple actually did this, and now people have all sorts of confusions about developing for the web.