see:
http://tiddlywiki.com/#Linking%20in%20WikiText ... the above notation is a "pretty link". As you found out, it treats the first part in the brackets as the "pretty link" text. The transclusion {{}} is not evaluated. Only the text is used. So the [[]] notation is "just" a convenience function for the link widget. It makes it faster and easier to write but for some edge cases it is also limited.
As you found out. For your behaviour you need the link widget, which gives you maximum flexibility.
To make your desired function easier to read and write, you can cover it into a macro. eg:
\define myLink(tiddler tooltip:"")
<$link to="""$tiddler$""" tooltip="""$tiddler$$tooltip$""">
<$transclude tiddler ="""$tiddler$""" field="caption">
<$view tiddler ="""$tiddler$""" field="title"/>
</$transclude>
</$link>
\endThe above function is a bit more generic. It uses the tiddler title, if there is no caption field.
You can use it with:
<<myLink noCaption>> or
<<myLink "tiddler has a caption field">>lets say the tiddler named noCaption has no caption field. so the title is used
lets say the "tiddler has a caption field" has one so the caption is used. (sorry for the stupid names)
have fun!
mario