That depends on your needs, but the core module + customer panel ("Kundenbereich") is the minimal required option for selling software downloads. Nevertheless you can also buy any addon later if you are missing some important feature. You may need also other payment types like paypal or stripe.
Thanks for your help. I'll start with the Kundenbereich package and go from there. To make sure I understand the serial numbers piece though, is the serial number assigned to the product itself or the instance of the product? In other words, what will I be looking for in the database to know that X user has purchased Y product?
Also, for generated serial numbers, are these GUIDs/UUIDs or are they just 0-based identifiers?