I would highly recommend not modifying existing tables. Plugins are designed to be able to create or modify their own tables, but modifying core tables could prove very problematic. In terms of tying into existing functionality, you might look at Event Handlers also known as hooks. Tying into the Invoices.add event, would allow you to edit an invoice right after it's created and add additional line items or make other modifications to it before it's emailed out.
If you need to display additional information on an invoice that's not there now, or can't be added by modifying an existing invoice, you should create your own tables for this data. It then may be necessary to create a custom invoice template that one could use instead of the default, that could fetch the information from those new tables for display.