For most B2B functionality, my favorite app to recommend is Sparklayer B2B. This is a full featured app with extensive B2B functionality.
It sounds like you are primarily looking for registration/application functionality, so you may also be interested in checking out the Helium Customer Fields app, which is specifically intended for creating custom registration forms and includes features like requiring account approval, and custom fields types such as file upload fields.
#1 For basic form customization, use Shopify Forms. Although that doesn’t work if you use Shopify’s setting to ‘Restrict access to B2B customers only‘ (this is a Plus-only Shopify B2B setting)
#2 Shopify Forms supports file upload. Same potential problem as #1. Shopify Forms also doesn’t support ‘account approval’ flows.
If you need manual account approval, advanced customization (form logic, personalization, validation), or an application form that works with access control, try Onboard B2B (Shopify Plus only)