I have custom object with Lookup to contact and need few fields in custom object which are already present in Contact.
Is it good to create formula field in custom object or create a same field and populate the data using trigger?
Formula, you never want to set yourself up to manage more code, alway less.
There are a few reasons for code over formula (being close to limits, needing to fire Workflow Rules when the value on the field changes, etc) but if you don't fall into those categories, go with formulas.
Corollary: Never write code if you can avoid it.