Where to store data for module I recently developed my first module. Part of its functionality is to store names, e-mails, and phone numbers of people on a newsletter. They sign up through the front-end and the admin can review and modify them on the backend. 

In addition it also stores SMS messages and their details (date sent, number sent from, message, etc) that come in from a short code. This process is triggered by an HTTP request. Again, the admin can review and modify these in the admin of the website.

And finally, the same install will host 15-20 tables with ~20 columns and ~170 rows of health, education, and water quality statistics that can be queried from the website.

So that's everything: newsletter list, sms messages, data

I've never worked with a CMS and added so much to the default database. I also lack a lot of knowledge about databases. So my question is Should I store all this extra information in a different database? My current hosting allows for 20, and I'm only utilizing one.

Let me know if you need any extra information. Thanks in advance!
I'm afraid you need a long answer for this.. 
But using a data*base* to store different values like this is not the best way I guess. 

You can use multiple databases with Drupal and switch them without a problem. But real question would be, why.

However, you can store categories in different table,and refer the category ID from the main sms message table. It's much easier to JOIN queries and get the data you want,rather than having a table for each category. 
Also, I'd suggest using core functionality  when you can. With new entity system in Drupal 7,you can make a new entity, an SMS, and attach fields like category it to.

If you are storing settings of the module, consider using system_settings_form to store settings. You can set/get them using variable_set and variable_get. But make sure that you don't store big text using this. 

Good luck!