Normally, EE parses tags outwardly in, so the tag that is on the outmost region is rendered first and thus has priority as does its variables. There is no namespacing, only unique names and the mentioned priority.
We recognize a tag as calling a plugin quite simply by seeing if it is located in the plugin directory. If a module and a plugin have the same name, I believe that the module will be recognized first and thus has priority. Once again no kind of name spacing is used here (we option not to do exp:module:module_name and exp:plugin:plugin_name). What the addition to the template engine that allows nested plugin does is for a limited amount of content it reverses the outwardly in approach to parsing. If a plugin is found and it has an EE tag enclosed (starts with {exp:), then it stops, takes the contents of that plugin (what is ever between the opening and closing tags), and parses what is inside first before parsing that first plugin.
As for fully scoped variable names, there is absolutely nothing to stop you from using them in your own modules and plugins, but the current EE modules do not use them. Perhaps in a future version of EE we will allow the “option” of using them, so if an admin sees a situation where confusion might develop he can use them. Otherwise, he could use the simpler ones.
As the template engine becomes more and more complicated (as if it is not enough), the power of it goes up but its speed goes down. There is a tough balance to reach in this area, and we are definitely not trying to make EE template parsing into something as complicated as a programming language parser (not that there were not ideas about it). We wish to steer quite clear of there, you can understand.