How do I create an invoice without product?
I would take a look at the Commerce Billy module

Features

Thread safe invoice number generation
Three invoice number generation methods: monthly, yearly, infinite
Configurable pre- an suffix values for invoice numbers
Arbitrary start value for invoice number
"invoiced" status on order entity (thus avoiding separate invoice entity)
Automatic or manual invoicing:
    Automatic: order moved to status "invoiced" on order completion
    Manual: admin moves order to status "invoiced" (VBO possible, Rules components already included)
PDF Generation (commerce_billy_pdf module)
Customizable PDF template
Views integration for PDF download link
Handling of credit memos (canceled orders)