Corda 5 or Corda 4 for my upcoming project?

For our upcoming project that is soon we are planning to commence, should I wait for Corda 5 production release or start with Corda 4 and then migrate to 5?
What are the pain points in doing the migration from 4 to 5?
Lastly, when likely Corda 5 production version will be released?

I would recommend you to start off with Corda 4 as of now, as Corda 4 release is completely supported and is a production release. For Corda 5 we have the developer preview v1 ready. This is just a preview and gives you an idea of how you could build a CorDapp in Corda 5. Over the coming year you should see more releases being rolled out.

With regards to Corda 4 to Corda 5 migration, there is a few changes such as the way we package the CorDapps, direct HTTP RPC API’s, and the way network that is deployed, etc. But the underlying idea of states and contract will still be the same.