ConvertAllnão é uma extensão, é um método na classe de lista. Você não precisa chamar ToListo resultado, pois já é uma lista:
List<int> list2 = list.ConvertAll(x => 2 * x);
Portanto, a diferença é que o ConvertAllmétodo só pode ser usado em uma lista e retorna uma lista. O Selectmétodo pode ser usado em qualquer coleção que implemente a IEnumerable<T>interface e retorna um IEnumerable<T>.
Além disso, eles fazem o processamento de forma diferente, portanto, eles têm seus pontos fortes em diferentes situações. O ConvertAllmétodo percorre a lista e cria uma nova lista de uma vez, enquanto o Selectmétodo usa a execução lenta e processa os itens apenas quando você precisa deles. Se você não precisa de todos os itens, o Selectmétodo é mais eficiente. Por outro lado, depois de ConvertAlldevolver a lista, não é necessário guardar a lista original.