All fields are visible for all users
no, in profile page you will see fields available, for each field you can choose if available on profile,registration and/or edit profile.
You can also choose for each field Availability and Visibility
Availability sets which user will have available this field, for example you can have 2 access levels: teacher and student, you can have a field like Courses only for teacher
Visibility sets which users will see this field, for example mail address is private field (in many cases), so you can choose visibility only for moderator
You can set field availability even with conditions, if role field equal to teacher show Courses field, students will not have this field