User profile public page
You will need to add a custom route for the path for which you want to show the profile from a list of all users.

Per my example of /profile/{{ username }}:

In your profile/index template, you would run a loop on the user set of your choice:

{% set users = craft.users %}
{% for user in users %}
    &lt;a href="/profile/{{ user }}"&gt;{{ user }}&lt;/a&gt;
{% endfor %}



Craft Admin › Settings › Routes
New Route
If the URI looks like this: profile/* (Use the * token provided)
Load this template: profile/_profile


Then, in your profile/_profile template, 

{% set user = craft.users.username( craft.request.segment(2) ).first() %}


Once user is defined, you can use the UserModel to return any data from that user (i.e. {{ user.email }} ).