You are right.
On an image the inset controls the placement/size of the image in relation to the area of the widget (or where the Java code draws that image). Negative values move the edge outside, positive values inside.
The border parameter on an image does not affect the image, but it is stored on that image.
On the theme you can then do this:
Code:
<param name="background"><image>.....</image></param>
<param name="border"><border>background.border</border></param>
This will extract the border value stored on the image and use it for that widget.
This allows you to define the border together with the other image parameters.
The term "background.border" is no magic value or anything - it is a java bean property: it looks up the "background" element first in the local scope and if that failed it tries the global scope. After the element was found it tries to access the bean property "border". Images also have other properties like "width" and "height", fonts have properties like "eM", "eX", "lineHeight", "spaceWidth", "baseLine" etc.