When I’m creating characters that will use different weapons throughout the game in a Metroidvania style game, do I have to create a different character sprite for each weapon.
You don’t need separate character sprites for each weapon, you can have one set of character sprites (or a few, for different weapon types) and draw the different weapon sprites on top (in-engine). It’s normal to layer sprites like this.
You will need some way to specify where the weapon goes though, you can do this either by making sure your weapon and character sprites share some specific point (e.g. the bottom left corner, or the centre), or by setting custom pivot points*.
* Aseprite doesn’t provide the capability to export anything like this. You would need to write some external tool to achieve this, or manually set the anchor/pivot points in your engine.
Edit: if you’re looking for a workflow to let you draw many different weapons over your sprite, then just have your character animation on a layer (or in a layer group), and have each weapon on its own layer above that. You can export just the weapon layers individually for putting into your game. If you have multiple animations for different weapon types, you can do those either as different animations (tags) within a single file, or as different files.