What should be the main concerns when generating extra data?
It's as you said there is a chance of bias in the dataset. To avoid this you'll have to conform to an algorithm to generate data. Right off the bat, the solution I would propose is parametric methods. Find the statistical distribution of data and depending on that distribution fill in data accordingly. 

If you want to know a bit more about parametric methods you can look at my answer here. 

What does it mean for the training data to be generated by a probability distribution over datasets

For some machine learning methods look at this answer I posted here.

What are the best way to handle missing values

There is never one single correct way to do what you're asking, but there are good ways and it depends on the nuances of your data.