Using Form to update User Profile and submit form Checking the best way to achieve this or if it can be done without a plugin.
I need to allow people to register and create user accounts on my site with various profile information.

Then I will have a form on the site available to users to submit which saves it in the backend and alerts by email. (A&amp;M forms looks like it has this functionality). When a user logs in this form should be prepopulated with data from their user profile.

When the form is submitted - can it update their user profile also?

It is basically a form for users to order repeat prescriptions - so I'm thinking user profile to save the standard date then use that to prepopulate the a&amp;m form. Is what I'm suggesting the best way to achieve this?
Yep, that's totally do-able. Check out this article to see how to create a registration form. 

Then check out this article to see how to create the update profile form.

The thing to note is that any custom fields like address or city need to be pre-pended with fields. 

So, let's say you want the user to enter their city. On your front-end form the markup looks like this:

&lt;h3&gt;&lt;label for="city"&gt;City&lt;/label&gt;&lt;/h3&gt;
&lt;input id="city" type="text" name="fields[city]"
{%- if currentUser is defined %} value="{{ currentUser.city }}"{% endif %}&gt;
    {% if currentUser is defined %}
        {{ errorList(currentUser.getErrors('city')) }}
    {% endif %}


... and so on.

Make sure that your field handle(s) in the CP align with what you call them on your front-end form.

Here is how you can check for the current user.

Here is another great example of how to populate custom fields in your profile/registration form.

Hope this helps!