Q:

wagtail pages vs using django views and urls

When and where should I use wagtail pages and when should I write my custom urls and views using django?  for example should I create pages for user profiles or should I add a urlpattern for profile and write profile logic in a django view? 

A:

This question is pretty broad and it depends a lot on what you are trying to achieve, but here are some thoughts. 
General Approach
Use Wagtail pages if your pages have CMS (user) editable content and need to be placed (and easily moved) within the main page tree along with other editable pages. 
If a page is not editable and URL must be fixed, it might be best to approach this either with Django URLs and views.  Eg.  Sitemap or Search page. 
The docs cover how to set up mixed URLs in Integrating into Django. 
Specific Use Case - User Profiles
You could create a Wagtail page model like UserProfileIndex which could contain some CMS editable content about that page such as body text and images. 
This assumes you are wanting to make a social media type index and page for each user. 
Then use RoutablePageMixin to have the URLs for each individual profile page. 
Sometimes this index page thinking can come in handy, it let's you change the root URL but puts the logic for sub-urls within the model. 
Remember that this means CMS users could technically change the slug of this page, unless it is locked down. 
If you are trying to create a user profile page that is more suited for a user to manage their profile then it would probably best to use Django view.