If I had a requirement to produce a custom template fragment for this, where would I place it and how would I expand the template so that the actual file that was used by Samba was changed?
Put the template fragment in /etc/e-smith/templates-custom/etc/smb.conf and then run "signal-event workgroup-update" and the correct things will happen.
I have also put in a change so that expand-template /etc/smb.conf does the right thing. I'll push that to smeupdates-testing.
The change is simple - create a file /etc/e-smith/templates.metadata containing the single line OUTPUT_FILENAME="/etc/samba/smb.conf" which says that although the templates are in /etc/smb.conf, we should generate the /etc/samba/smb.conf file.
If I expand /etc/smb.conf will it not overwrite any symlink that was to be in place already?
Possibly, but it won't do anything useful either, as you have found. Another fix would be to move all templates to /etc/samba/smb.conf, but that will affect quite a few contribs.
Sorry, but am still trying to get my head around the templating and it's just starting to sink into my thick skull 
No worries. Make sure you read the developers guide - linked from the Development page. I spent a lot of time explaining the templates system in that guide.