Так, прошу прощения за поздний ответ.
1. Я вижу использование ng-app и в этом случае действительно директива связывает используемые данные с rootScope, т. е. ng-model="myUrl" смотрит на rootScope.myUrl. На практике такое встретишь редко, все же "загрязнять" рутовый скоуп считается bad practice, но в качестве тестового примера безусловно подойдет.
2. Теперь непосредственно к твоему вопросу (надеюсь сейчас я на него отвечу).
А. Итак, у тебя есть директива <div my-directive, с атрибутом some-attr="{{ myUrl }}". Т. е. мы в качестве значения атрибута some-attr поставляем извне myUrl (в данном случае это тот самый myUrl из рут скоупа). Фигурные скобки или обычные - это всего лишь способы биндинга данных, можешь почитать тут
https://gist.github.com/CMCDragonkai/6282750 подробнее.
Б. Теперь идем в код непосредственно самой директивы и обращаем пристальное внимание на объект scope, видим следующее:
myUrl: '@someAttr',
myLinkText: '@'
Это говорит нам о следующем - для директивы будет создан изолированный объект-скоуп, в котором будут инициализированы 2 свойства - scope.myUrl и scope.myLinkText. Первое свойство будет связано со значением, которое подается в директиву в качестве атрибута some-attr (синтаксис таков, что в перечислении свойств используется camel case нотация атрибутов).
Вот и получается следующее - в изолированном скоупе появляется собственное свойство scope.myUrl - оно не унаследовано от родительского скоупа, но за счет создания связи - оно будет изменяться в обе стороны со свойством myUrl из рут скоупа, которое подано как значение someAttr.
В принципе чтобы не путаться, можно объявить изолированный скоуп как
scope: {
isolatedMyUrl: '@someAttr',
myLinkText: '@'
},
и поменять темплейт директивы
template: '<a href="{{isolatedMyUrl}}">' +
'{{myLinkText}}</a>'
Работать все будет так же.