Aber wie gesagt. Das ist millionenfache Praxis und ich halte diese nicht generell für gefährlich, sondern für größtenteils vorteilhaft.
ums abzukürzen, ich halte es auch nicht für gefährlich aber es ist nicht richtig - ja, man darf ein <a /> element, welches man mit javascript (der von dir angesprochene dritte kontext) erzeugt dafür verwenden, auszusehen wie ein link
wenn ich aber ohne javascript daherkomme, will ich nicht von etwas verwirrt werden, dass aussieht wie ein link, sich verhält wie ein link aber nix tut sondern als ziel nur javascript: oder # angegeben hat - das ist defintiv falsch und überhaupt nicht barrierefrei - da kann ich 100% einen javascriptfähigen "screenreader" haben - aber sobald ich mit meiner braillezeile oder mit lynx daherkomme und da steht "klicken Sie hier um die AGB zu lesen" und dann passiert nix, weil irgend ein hornhochse <a href="#" onclick="mach_die_agb_auf();" title="klicken Sie hier um die AGB zu lesen">AGB</a> im html stehen hat, bekomm ich die kriese
wenn das ding schon aus visuellen gründen oder warum auch immer ein <a /> element sein soll, dann darf das ding auch gefällist nicht im html sein sondern soll erst durch javascript erzeugt werden, damit es überhaupt nicht da ist, wenn ich kein javascript habe und garnicht die frage aufwerfen kann "warum ist da ein link der kein link ist?"