The [img[url]] syntax creates an instance of the <$image> widget. That means that you can use it with URLs or with images that have been imported as tiddlers. The HTML <img> syntax only works with URLs.
If you're just manually creating links to images then probably the main reason to use the _canonical_uri approach is so that you can refer to an image via a convenient tiddler title instead of the long URL. Users can also open external image tiddlers directly in the story view, without needing to open a tiddler and type some codes.
The purpose of the _canonical_uri field is to enable us to build TiddlyWikis that refer to image tiddlers via a URL instead of embedding it as a base 64 URI - it was actually implemented in response to your experiments with 80MB TiddlyWiki's containing lots of images.
With external images, we can have a single representation of an image tiddler on the server, but have the freedom to elect to serve it to the browser either as an external image or embedded into the file.
Best wishes
Jeremy