What's the best way to create public profile and content forms?
User registration works just like front-end entry editing. You build the form on any page you like, and submit it to the action "users/saveUser".

All fields need to be coded by you, and extra profile fields can be filled in by setting the input name to "fields[handle]".

The Craft Documentation has an example registration form. The also have an example for allowing users to update their profile.