It's really up to you - best practice... well that depends. I worried about that a lot at the start but I really learned Best Practice is very subjective. We use AutoMapper extensively and as a general rule we have a 1-1 map with View and ViewModel.
However if an Index contains no additional properties we often just return an IEnumerable<PersonViewModel>
etc. However we often find we then do have to put in a ViewModel for the Index as soon as we need additional properties e.g. Filters etc
Also if you want to map a list to a list just do:
var model=Mapper.Map<List<PersonViewModel>>(personList)
Don't Create Map in controller. Set that up in a class at App startup see this question.
Have a look at these articles on AutoMapper. This one is a bit old but it was inspiration to us when we started. This one from Jimmy Bogard outlines their initial approach (and he created AutoMapper). This is his thoughts on how he is doing MVC now with some mentions on AutoMapper usage