Domain names can be split into two sections
New Domain Names
How to register your new Domain Name
Existing Domain Names
How to transfer your Domain Name
For new Domain names I would highly recommend that you use Namescheap you can create a new account here.
The reason I suggest this is because they offer great value on new domain names, they are quick to propagate your services and they have good support that are always available.
There are other services that you can use, a slightly more expensive one is GoDaddy, which whilst good for domain names, I would not use anything else (hosting etc). Which brings up another point. One challenge with other providers is the onslaught of upsells that they try to offer you. This can be quite a nuisance, and way more than you actually need to build your website. While Namescheap does offer some additional services, they are low key about it.
Another great feature about Namescheap is that they offer SSL certificates at a very low cost.
I prefer to have my domain names and SSL certificates in one dashboard so that I can edit them with ease. I advise that you make this part of your website strategy as well.
I NEVER recommend having your Domain Name, Email and Hosting together on the same platform, so my only suggestion here is to purchase your Domain Name and Your SSL from Namescheap, WPEngine for your hosting and Google Apps For Business for your Email. For existing domain names I would highly recommend looking into the knowledge base at Namescheap, as they have some great information that will assist you in migrating your domain name from a list of providers.