I've never found a need/crash/issue with just Dispose() or SimConnect_Close(), w/out removing anything. And I've done it personally certainly dozens if not hundreds of times during a sim session while testing code, including from WASMs, nor have any of hundreds of users reported anything.
I
am always "polite" and explicitly Dispose()/Close(), and I'm a stickler for having my apps exit cleanly so they have a chance to do so (which goes for any type of connection/file/handle/etc). But even when my apps crash or exit unexpectedly (only in dev! ;-) ) I've not really had any issue that I can recall.
The
documentation suggests as much also:
Of course, as they say, YMMV...

But if one has crashes on exit, or other strangeness on restarting a session, I'd guess there's some other more likely issue at hand.
Cheers,
-Max