If you do not wish to actually allow people to start filling out assignments in "Course XYZ" but have a teacher create accounts for them and send the account information manually, you could just make a "Course XYZ - enrollment" which is available to guests and only has the form you need - either write a custom activity module or use https://moodle.org/plugins/mod_questionnaire if it allows multiple guests to submit the questionnaire.
To match your points:
1. Visitor selects course - an the course is "Course XYZ - enrollment" - the actual "Course XYZ" is in a hidden cathegory to not confuse the users.
2. Visitor is presented with course
details and a subscribe button - the questionnaire activity is called "Subscribe" and styled with custom css.
3. Visitor clicks subscribe button and
is presented with a short form which collects contact details - contents of the activity module.
4. Visitor submits contact detail form
and receives a confirmation e-mail which is also sent to the course teacher - no idea whether mod_questionnaire has such a feature but you could probably write one yourself. Otherwise, if the student doesn't need to be send the data he just put in there, the teacher can simply see it in attempts section.
5. Course teacher can contact visitor if necessary and manually subscribes
the visitor to the course for administrative purposes - standard moodle functions: teacher creates account and sends the login credentials, enrols the student and you're done.