Salut,
Le 1er soucis c'est que tu n'as pas initialisé mot1, du coup son contenu de base est indéfini.
Le 2e soucis c'est que strcat ne permet pas de concaténer des caractères mais bien des chaines de caractères. Du coup quand tu fait strcat(mot1, &mot[i]), ce que tu ajoutes à mot1, ce n'est pas le caractère d'indice i de mot, mais bien toute la chaine de caractères qui commence à l'indice i de mot.
Tu pourrais par exemple procéder comme ça :
void verifieMot2(char mot[20], int posMot) {
char mot1[20] = ""; // bien initialiser ta chaine
for (int i = 0 ; i < posMot ; i++) {
mot1[i] = mot[i]; // copier un par un les caractères à la main
}
mot1[posMot] = '\0'; // ne pas oublier d'ajouter le caractère nul pour terminer la chaine
printf("%s", mot1);
}
A noter qu'il faudrait vérifier les paramètres donnés à la fonction pour s'assurer qu'on n'aille pas lire/écrire en dehors de la mémoire qui nous est allouée, ce qui n'est pas du tout le cas ici 