Sorry, Greg, I'm incoherent at the best of times and morning isn't the best of times.
There are 2 options for URLs. And PLEASE NOTE that despite the superficial similarities, URLs are NOT resource paths, nor are resource paths URL fragments. They're 2 completely different things that just happen to look alike. And, depending on server capabilities, SOMETIMES act similarly.
The first options is a relative URL or resource path. In both cases, you can identify these because they don't begin with a slash. Or in the case of a URL, don't have an explicit protocol and server name in them. Or have only a protocol and so look like this: "http:./images/mypic.jpg". In other words, no double-slash after the "http(s):"
The second option is an absolute URL or path. For an absolute URL, the server name/port and webapp context paths are included. For an absolute resource name, the initial character is a slash character. Absolute is also dependent on context, since the root of a webapp is its top-level WAR directory, but the base of an external file resource is the root of the filesystem.
There is a "base" HTML tag that can be used to relocate the idea of where the base of an absolute URL is, but it doesn't get along that well with JSF.
Struts, BTW has its own "base" tag to get around that.
There are 2 different bases for JSF URLs. One is the entire webapp URL, from, and including the context path on down. The other is the absolute location within the webapp, and its base is the root of the WAR. The second one applies to resource paths within the WAR or web-xml mappings (but that a whole 'nother can of worms!).
Raw HTML absolute URLs must always include the context path, since there's no way externally to tell how much of the URL is the context path part, even though 98% of the time, it's a single level.
JSF URLs that want to be nice to us, however, will provide the context path as part of their generated HTML output. Unfortunately, I'm not really sure that all JSF components are nice.
So, when setting up a template whose context path is something like WEB-INF/layouts/masterPage.xhtml, you can always find an image in the /images directory of the WAR by using the "absolute" URL "/images/mypic.jpg", regardless of what the directory structure of the invoking page view is. However, if you use a relative URL, the image location will be interpreted as relative to the location of the invoking view, not the template view. So absolute is the way to go. And, of course, don't use the raw HTML "img" tag, use the JSF image tag.