Canonical tags are intended to tell search engines what pages you prefer. They, in of themselves, do not mess up SEO, they help it. However, it is a level of detail you do want to pay attention to.
For example, I may have one strong page on a topic and several smaller pages that, while seemingly similar in a search engines eyes, do help to cover the topic more completely. These smaller pages could use a canonical tag to point to the page with more complete content. I will get back to this.
Another example is where a product page may have options given to the user via parameters. The pages with parameters could have a canonical tag pointing to the product page without parameters.
Where a 301 redirect exists, no canonical tag is required. Simply redirecting HTTP to HTTPS and example.com to
www.example.com does not have to be covered with canonical tags.
Ask yourself this one thing. When a user tries to go to my website, where do I want them to go? You already define this with your redirects.
For all of my pages I use a canonical tag to point to the page the user is on. Where I feel that I might be cannibalizing search efforts by having too many pages rank in search, I simply create a canonical tag on all the pages I do not prefer to be found in search and point to to the page I do prefer to be found in search.
For example, on one site, I created a page on a topic that covers a lot of ground with good detail. This is the page that anyone interested in my topic should go to first to get a good overview of the topic in full. I also created smaller pages that cover sub-topics of the larger page where it was not appropriate to discuss in full in the overview. I link to these pages for readers who want a better understanding of the one or two paragraphs in more detail.
Since these pages, the overview and sub-topic pages cover the same topic in different ways, there is duplication and search engines might not rank the overview page over the sub-topic pages. For that, I create a canonical tag on the sub-topic pages to point to the overview page giving preference to the overview.
This does not mean that the sub-topic pages will not be found in search. It just means that the overview is preferred over the others.
As for your home page, I always recommend that the home page reference itself in the way that users see it after all the redirects. Your site should only be found one way. For example, if a user can see your site via
www.example.com and example.com, you are cannibalizing your search efforts. This is because both are different sites in the eyes of a search engine. Redirecting example.com to
www.example.com, you are telling the search engines that
www.example.com is the site you want.
If you redirect all HTTP requests and all example.com requests to https
www.example.com, then HTTPS
www.example.com is the canonical tag you should place on your home page. It is not required that you create a canonical tag for this, however, many recommend it as do I. It certainly does not create harm.