Aside from only adding a license docblock and terms/conditions how can I protect my module from people using without paying for a license?
Sad truth is - you can't. Keep in mind that even the biggest publicly listed software vendors in the world are struggling with piracy so consider where you want to spend your efforts.
There are options for encoding php which have been mentioned in the other answers. However all will fail the hassle free step as they require your customer to download a binary and install it as a php extension. Also if someone is determined to get to your code, there are ways.
One reason that I chose not to encrypt my code is that if I put myself into my customer's position I would want to be able to read and work with the code that I bought. Also I am fairly sure that people who are willing to run counterfeit/stolen code would not be buying my extension in the first place. And who knows what other nefarious modifications have been slipped into it, people would be buying/downloading from thieves.
What is the correct way to generate license keys and distribute them to customers
Whatever works for you and causes you the least amount of support requests. I think the most convenient way for customers would be to create a personalised download which already includes the serial number you created for them.
Keep in mind that if you do not encrypt your code any serial number validity check is easily defeated. However I do believe doing serial numbers, even if easily circumvented, does act as a reminder that the code in question is tied against a certain use (domain).