I’m not precisely sure what you mean by “Display” here.
Anyways, template properties qualify as custom properties, but can only have bindings in the Vision window that holds the template, or an outer template that nests the given template. Template internal properties are custom properties that are invisible to the Vision window or outer template but can have bindings inside the template. Expression bindings inside the template, both for template internal properties and for custom properties on a template’s components, can use values from anywhere else inside the template.
Choosing where to create a custom property to hold an intermediate value (like an indirect tag binding) is pretty open, since bindings can draw from all over in your template. I like to keep custom properties on the component where they are used, if they are only used in one place. Then on any container where they have multiple consuming expressions. I would use template internal props if the intermediate value is used all over the place.
Note that you do not have any binding option to expose template internal calculations to the vision window or outer template of a nesting situation. Template internals must use scripting to write to exposed template properties, and that is only useful for the single-instance template holder component. Repeater/Canvas usage doesn’t expose them at all.