Ambos estão corretos em seu próprio contexto. Eles estão descrevendo duas maneiras diferentes de seleção de modelos em diferentes situações.
Em geral, quando você está selecionando e testando modelos, seus dados são divididos em três partes: conjunto de treinamento, conjunto de validação e conjunto de testes. Você usa seu conjunto de treinamento para treinar modelos diferentes, estimar o desempenho em seu conjunto de validação, depois selecionar o modelo com desempenho ideal e testá-lo em seu conjunto de testes.
Por outro lado, se você estiver usando a validação cruzada de dobra K para estimar o desempenho de um modelo, seus dados serão divididos em dobras K, você percorrerá as dobras K e cada vez que usar uma dobra como teste (ou validação) ajuste e use as dobras restantes (K-1) como conjunto de treinamento. Em seguida, você calcula a média de todas as dobras para obter o desempenho estimado do teste do seu modelo. É a isso que a página da Wikipedia está se referindo.
Mas lembre-se de que isso é para testar um modelo específico. Se você possui vários modelos candidatos e deseja fazer a seleção de modelos também, é necessário selecionar um modelo apenas com seu conjunto de treinamento para evitar essa sutil falácia da lógica circular.. Assim, você divide ainda mais os 'dados de treinamento' das dobras (K-1) em duas partes, uma para treinamento e outra para validação. Isso significa que você faz uma 'validação cruzada' primeiro para selecionar o modelo ideal dentro das dobras (K-1) e depois testa esse modelo ideal na sua dobra de teste. Em outras palavras, você está realizando uma validação cruzada de dois níveis, uma é a validação cruzada K-fold em geral e, em cada loop de validação cruzada, há uma validação cruzada extra (K-1) para seleção de modelo. Em seguida, você tem o que declarou em sua pergunta: 'Das k subamostras, uma subamostra é retida como dados de validação, outra subamostra é retida como dados de teste e k-2 subamostras são usadas como dados de treinamento'.