AIUI the [img] tag just gets turned into a normal HTML <img> tag, with appropriate size constraints added. Acceptable image formats presumably left as an exercise for the reader's browser, so all the usual web image formats should work.
If you link to a larger image, the browser downloads it and scales it to fit the page, as is normal in HTML. The forum's size limit saves screen space (so stops massive images mucking up the page formatting), but does nothing to save network bandwidth. Obviously therefore the optimum solution is to scale the image to something less than 640px before linking to it. If you want to be elegant, you can wrap the image in a [url] tag linking to the full size version.
This was all very simple back in the early-2000s when the forum software was written, as you could reasonably expect people to understand how the internet works. It hasn't aged well.
Linking to an image on somebody else's website is bad netiquette, but I'd suggest that a third-party service you're using to host your own images doesn't really count as 'somebody else's website'. It might violate the T&Cs of your service, of course, but that's your own problem. Also see above for an approximation of the last time anyone cared about 'netiquette'. The modern solution is to either throw bandwidth at the problem, or simply refuse to serve images to hotlinkers.