You can easily add your new custom domain to existing xyz.wordpress.com by following the steps given below;
Go to https://wordpress.com/domains/manage
Click on Add Domain at the left side colored button
Buy the domain by searching suitable one (or) click on Already own a domain?
It will re-direct the next page, there will be two options right now and select the option per your choice and follow the rest steps.
For more setting steps on new domain adding on wordpress, you can follow these mapping steps, ref: https://en.support.wordpress.com/domains/map-existing-domain/#steps-for-mapping-a-domain
You can also try to know how install wordpress on a domain after buying hosting. It depend on hosting service provider. Each hosting service provider has different steps to install the wordpress. You can search as "How to Install WordPress on Bluehost"? or "How to Install WordPress on GoDaddy"? etc. after buying hosting. So that you will get enough detail about it.
With regards to hosting, you can try https://wordpress.org/hosting/ itself which sometime gives best offer. GoDaddy also has the best planning.
If you don't contribute much then free wordpress or blogspot is enough with custom domain adding on it and save hosting money. If you are a professional blogger and would like to keep on adding the content then you can go ahead for the domain, hosting, webdesigning, email-domain and on.