Ответ 1
При разрешении перегрузки, когда рассматривается неявная последовательность преобразования в инициализации списка,
(акцент мой)
В противном случае, если тип параметра не является классом, а в списке инициализаций имеется один элемент, неявная последовательность преобразования - это та, которая требуется для преобразования элемента в тип параметра
Для f({42}); , для f(int) неявная последовательность преобразования является той, которая преобразует элемент (т.е. 42) в int, что является точным совпадением; для f(std::vector<int>) требуется пользовательское преобразование (преобразование std::initializer_list<int> в std::vector<int>), тогда это хуже.
PS: если бит-инициализатор содержит более одного элемента, такого как {42, 42}, будет выбран f(std::vector<int>).