It’s about the URL that’s mentioned.
<link rel=”canonical” href=”b.html” />
If this is on a.html, then it’s just a normal canonical (technically canonical link element), if it’s on b.html, then it’s a self-referential one.
Since you don’t know how people link to your pages, a self-referential one helps to clean up small mistakes. For example, if a link goes to b.html?utm=cheese , then usually the server just shows b.html, and a self-referential canonical link element there would then encourage search engines to just use “b.html” instead of “b.html?utm=cheese”.