Mohammad,
I am not so clear on what is wrong, or are you saying nothing is when you expect it to break?
In both cases the "currentTiddler" is being changed (listed) in the List widget. So in both cases the macro will be operating with each value of current tiddler as a result of the list.
As a result both <<currentTiddler>> and $(currentTiddler)$ are the same value.
I don't think these will vary from each other so often, in the case of currentTiddler which is dynamically generated.
However if you used another variable in the below example you should see what I mean.
\define myMac1() $(currentTiddler)$
\define myMac2() <<currentTiddler>>
\define myMac3()
<<currentTiddler>><br>
`<<another-variable>>`: <<another-variable>><br> `$ (another-variable) $` $(another-variable)$<br>
<$set name=another-variable value="I have changed another-variable ">
After changing varable `<<another-variable>>`: <<another-variable>><br> `$ (another-variable) $` "$(another-variable)$" but this remains the same<br>
</$set>
\end
\define myMac4()
<<currentTiddler>><br>
`<<another-variable>>`: <<another-variable>><br> `$ (another-variable) $` $(another-variable)$<br>
\end
<$set name=another-variable value="See what I mean">
<$list filter="[tag[HelloThere]]">
currentTiddler: <<currentTiddler>><br>
myMac1: <<myMac1>><br>
myMac2: <<myMac2>><br>
myMac3: <<myMac3>><br>
myMac4: <<myMac4>><br>
<hr>
</$list>
</$set>
Regards
Tony