A) To purchase a new domain name:
Go to your Shopify Admin > Online Store > Domains > Buy New Domain.
Type in the root-name of the domain you would like to purchase, and it will show you a bunch of popular and recommended extensions for the domain (ie. com, ca, net, org). Next to each domain name, it will say if it's available or taken. If you find a domain you like, and it's available, then click the "buy" button next to it to purchase the domain.
If you have already purchased a custom domain name via a third-party provider (not through Shopify), such as GoDaddy or Namecheap, then you can definitely add and use the domain for your Shopify store.
B) To link an existing domain name:
Go to your Shopify Admin > Online Store > Domains > Connect Existing Domain.
Simply type in the domain name you would like to connect, and click next. Follow the steps provided, which usually requires changing your domain's DNS records, or if you're using GoDaddy, it will prompt you to login to your account so that Shopify can automatically set the correct records.
From here, you will want to verify the domain's connection by clicking the "verify connection" button after adding the domain name.
If everything was setup correctly, you should be prompted with something similar to the following message.
C) To setup email forwarding & send-from capability:
You can create a forwarding address for a domain purchased via Shopify by going to your Shopify admin > Online Store > Domains > Click on the name of the domain you purchased > Click the "Add forwarding email address" button.
If you purchased your domain via a third-party domain provider (such as GoDaddy) then you will want to reach out to their respective support team for instructions on how to setup a forwarding address. Pretty much all domain names come with free forwarding addresses, so no matter who you purchase through, this should be an option available to you.
If you're looking for professional email hosting, then I'd highly recommend GoDaddy's professional email services, which I personally use for Stephen's World (see here).
If you're looking for a free way to send emails from your branded forwarding address (ie. email@example.com) then the best way to do so is to link the forwarding address, as an alias, to either Outlook (click here) or Gmail (click here). Note: doing it this way will make your emails more likely to end up in your customers' spam folder.
Need more help with this step? Check out Shopify's help docs for domain setups by clicking here.