Ok I think I've got it, and please correct me if I am wrong. (No, really, I want to learn this stuff).
The automagical things Angular does with variables and scopes is throwing me a bit, coming from C# where I "own" the variables. In certain context's Angular "owns" the variables and that's why I get errors.
What I think it boils down to is: If I want to create or add a variable to a scope, don't do it in the directive's html tag or in the scope: {} declaration. Just declare the variable in the code as:
scope.myVar = 0; - this is my var, and yes it is in the scope.
not
<mydir myVar="0"></myDir> -- Angular says, "nono!! That's MY var now."
or
return {
restrict:'E',
scope: {
myVar: "0" -- not your var anymore, Toto!
},
...
}