Something this in-depth is a bit too complex for business rules, so you are going to need to write a bit of code and get your hands dirty. How you approach this depends on how different each of these Opportunity Types are. Folks who come from Salesforce sometimes expect this type of behavior to be easy in Dynamics CRM, but it's just not how the system is set up to operate.
Option 1: Use a single form, and show or hide sections/tabs of the form depending on the Opportunity Type selected
- Great if the fields between forms are not drastically different, or if there will be commonalities between each of the forms
- Start the record with the "core" fields, and when the user selects the Opportunity Type it can show the relevant tab or sections
Option 2: Use separate forms, and use JavaScript to switch based on the Opportunity Type
- More complex, as you now have 3 forms to manage
- You also have more flexibility, because you can create business rules or drastically change each form to fit
------------------------
The Business Process Flow is actually a separate requirement, but the options closely match the forms. Important to note is that Business Process Flows are distinct records that are created in CRM and related to the sales record. As such, creating them through automation is much like creating any other type of record (and not something I would usually do through JavaScript).
Option 1: Create a single Business Process Flow with branching logic
- Good if core processes are similar, but there are some distinct differences in stages or the required fields in each step
- Significantly easier to manage, and only having a single BPF means the system creates it for you automatically (which is awesome!)
Option 2: Create three separate Business Process flows
- Would require creating three entirely separate business process flows (6 if you go from Lead to Opportunity, as BPFs are distinct to the record they begin at)
- Need to write some automation (workflow, cloud flow, plugin) to create the proper BPF and relate it to the Opportunity
Personally, I would do whatever you can to standardize and streamline the sales process across your types. Try to keep as many fields in common as you can, and minimize the differences. Not only will it help with the current requirement, but everything else (reporting, system views, downstream automations) will be easier if you don't need to write essentially three versions of each.
Hope this helps, and if it did please consider marking the answer as verified.