As you stated, when it comes to a HTML file there are two basic URL types:
1. Absolute: This type of URL includes all the information needed to describe where the referenced resource (in this case an image file) is stored, and what that resource is called (the image file's name). It also generally includes what protocol to use to retrieve it.
2. Relative: This type of URL assumes that the referenced resource is stored in a location that is relative to the location that the HTML file is stored in.
There are also generally two basic location types that a HTML file (and it's referenced resources) can be stored in:
1. Remotely: Host on a web-server.
Generally it doesn't matter if you use either an Absolute URL or a Relative URL when referencing resources, assuming that the HTML file and the referenced resource are stored on the same remote location and that location is commonly available to everyone viewing the HTML file.
2. Locally: Stored on a local hard-drive.
In this particular case you generally wouldn't use an Absolute URL to reference a resource because while the full path to the resource will be valid on your machine it is unlikely to be valid on someone else's. This is why a Relative URL is used, because it will generally be valid no matter who's machine the HTML file is being viewed on.
You may be asking how does the above relate to the Twine 2 application, and the reason is as follows.
I stated that a Relative URL needs to reference a resource stored relative to the HTML file, which the Publish to File option generates and you can control where that HTML file is stored so you can make sure your image files are stored relative to that location. However the Test and Play options create a HTML document that only exists in memory, this means that there is no HTML file stored on the hard-drive for the images files to be relative to, and this is why Relative URL's don't work when using the Test or Play options.
There are a number of ways the Desktop release of the Twine 2 application could be changed to support a Relative URL, each of them has their own pros & cons.
One possible solution is that the Test and Play options could be changed so that a temporary HTML file is created in a known location, this is what the Twine 1.x application does, and this would allow you to store your resources relative to that location.
A related issue, that of being able to control where each story project is saved on the local machine (and which could also be used as the location of the temporary HTML file), has been looked at a couple of times but no successful implementation has been created yet.