Thanks for the answere even if late..;-)
I don't remember exactly the details of the beginning of the discussion (and I am too lazy to reread). But some "short" answers nevertheless:
1. You can use elements from other sources in Zenphoto using the text-object plugin. Just upload an text file with a link or whatever and it will be displayed. Sure that is not the same but I don't think that Zenphoto needs to be able to integrate with everything..
I can understand that there are numerous possibilites and nice feature the one or the other may want to have. But we are a small voluntary team (2 frequently active developers plus one server administrator) so we focus on things we can manage and maybe "need" ourselves. Much is possible via plugins now so any contribution from third parties for special stuff is needed.
2. Generally, we only return html stuff with complex "print" functions. Some return full sets of html like lists when applicable as this is convenient for many users like the pageslist navigation that reequires a list. Just a titlte or so is never wrapped into a <span>. If a function is named printLinksomething it prints a link meaning a <a href></a>
CSS classes are sometimes attached by default but can nearly always be passed manually (some functions have fixed ones for convenience or to keep the number of parameters little).
But to have flexibility we have nearly always a "get" equivalent returning raw data. What raw data depends on the type of function so some return objects, some strings or array or simply a value.
But if you want to go the full manual way you can since ever! Zenphoto has an object orientated framework so you can do everything directly if you wish to. Look at the documentation of the classes. But you will probably do some work that the template functions already do for you.