I didn't mean to make things sound more complicated then they are; occasionally people coming from other systems use the phrase "add a contact to a list" to mean "create a contact record" and I wanted to make sure you and I were on the same page.
It sounds like you might be trying to do both; create a contact, and then add it to a list. I'll try to cover each separately, since they're not really directly related.
There are a number of ways to create contacts via the API. For offline contacts, your best bet is the Contacts API. If the contacts are submitting an external form, you'll want to check out the Forms API (see below). Other non-API methods include standard HubSpot forms, in-app creation, and imports.
Now to add those contacts to a list, it's important to know which kind of list we're working with. Static lists are simple; they're a list you can manually add/remove contacts to. If the list you're looking to add contacts to is a Static list, you'd want to use the 'Add contact to a list' endpoint. Active lists, on the other hand, are automatically populated based on their criteria. It's not possible to directly add a contact to an active list; you need to update the contact record to fit the criteria.
Let me know if that helps answer your question, and feel free to post any follow up questions below!