boas, 
  
os caracteres aparecem porque são os que estão em memória, no buffer. 
não use o gets para buscar introduzir um conjunto de caracteres, o scanf é a melhor opcao, para evitar este tipo de problema 
  
o truque está antes do espaço do "coco" scanf("%10[^\n]", coco); 
  
se experimentares tirar o espaço vai dar igual ao teu gets 
  
#include <stdio.h> 
#include <string.h>  
int main() 
{ 
    char coco[10],coco2[10]; 
    int i=0,j=0; 
    scanf("%10[^\n]", coco); 
    for (i=0; coco!='\0'; i++){ 
        coco2[j]=coco; 
        j++; 
    } 
    printf("\n%s",coco2);  
    return 0; 
} 
  
sugestão otimizada: 
  
#include <stdio.h> 
#include <string.h> 
#define N 10 //n de elementos nas strings 
int main() 
{ 
    char coco[N],coco2[N]; 
    int i=0; 
    scanf("%N[^\n]", coco); 
    for (i=0; i<N; i++) 
        coco2=coco;  
    printf("\n%s",coco2); 
return 0; 
}