Short answer: Setup a Microsoft Outlook account on the windows phone, sync everything to it then export a CSV of all the contacts on a laptop. Login to your Google account on the laptop and import them all. Sync that google account with the Android phone.
My painful experience
My dad has had a Nokia Lumia 635 for a while (over a year). He wanted to upgrade his ageing Nokia and went into Carphone warehouse to get a upgrade. The sales person must have rubbed their hands (I felt they took advantage of my dad saying he wanted a Nokia) and sold him a Nokia Lumia with Windows Phone on it. I was pretty pissed about this because my dad already has a google account, chromebook and my mum has this and a Samsung android phone.
On Boxing day we went back and looked into buying him out of his contract. This was fine and he choose a HTC desire 626 as it had a big screen and didn’t cost anything to his contract. After taking it home, I set it up for him and boy did the fun start.
Some quick things… I’m running Ubuntu on a laptop, my parents have a chromebook, we all have google accounts and we now all have android phones. My parents are not technical and mainly use text and voice. They have broadband with wifi in the house plus a chromecast I bought a few years ago. The Nokia couldn’t connect to any wifi unless it was open with no security/encryption (I tried many ways to get this working but it seems to be a common fault, which requires a total wipe!)
I plugged the Nokia into my Ubuntu laptop then copied everything off it I could see. Then copied it to the HTC phone, I also turned off my WPA security on my Nexus 5x phone to allow the Nokia to actually connect to the internet without using my dads low 4g data usage. Then setup his google account which I set to sync everything. When trying to sync contact information with the google account nothing would sync. I had my laptop open with the google account so I could see what was syncing and what wasn’t. I tried forcing the sync and Windows phone kept forcing me to sync with Outlook.com. In the end I setup a temporary outlook account and synced everything with that. I could see things syncing correctly on my laptop screen.
I thought with both accounts on the Windows phone it would now sync but no. So I had to export the lot out of Outlook.com on the laptop as a CSV file then import them into the google account via my laptop. Once syncing, I could setup the google account on the Android phone and everything was good except Gmail automatically creates a group for the imported contacts which I had to delete but keep the contacts.
Once that was done, I forced a system update and greeted with the Android 6.0 (Marshmallow) upgrade, meaning my mums new phone and dads phones are very similar making the learning experience a little easier between both my parents.
Ultimately I was quite shocked how difficult a simple thing task was. I mean dataportability should be simple and at one point I was going to give up and get my dad to write out all the contacts to a new his new phone. It wasn’t helped by not having wifi access on the Nokia. I did try Bluetooth and sending contacts as emails but nothing quite worked.
I hope this helps others as I was tearing my hair out to get such a simple thing working. No wonder Nokia has dumped Windows mobile and gone Android.