As far as I have been able to tell, it migrates absolutely everything (except apps; those of course need to re-download); I've upgraded 4 phones over the last year or so and have never noticed anything that didn't get moved. Not entirely sure about speed since I wasn't paying close attention, but my ~100GB worth of data took less than an hour.
One thing that I did run into, which will only apply if you are using manual music management on a computer and syncing to your phone: The migration does move all of your music from the old phone to the new one, but when you next sync with a computer the music that was migrated isn't recognized as being the same, so you will end up with two copies of everything. The only way I could find to resolve this was to remove all music from the phone and re-sync.