Multiple registration forms
First thing you should be aware of, is that you probably don't want to expose the roles to the user during registration, at least not all of them. If you do, then any user would be able to create an admin account, and gain access to the backend.

You can't easily make different registration forms, but you can instead create a multi step form. Step one would be general user information where the user selects which role / type of user to create. The second step would have unique fields depending on the role selection.

The example module has a lot of great examples including how to create multi-step forms.