awk approach:
awk 'BEGIN{OFS="\t";print "pos" OFS "COL1"}{if(NR==1){for(f=2;f<=NF;f++) c[f]=$f;}
else{for(i=2;i<=NF;i++) print $1,c[i],$i}}' real2.txt
The output:
pos COL1
18691441 COL1 C
18691441 COL2 A
18691441 COL3 G
18691572 COL1 G
18691572 COL2 C
18691572 COL3 G
18691620 COL1 A
18691620 COL2 T
18691620 COL3 G
18691716 COL1 C
18691716 COL2 G
18691716 COL3 C
OFS="\t" - output field separator
print "pos" OFS "COL1" - prints header line
NR>1if(NR==1){for(f=2;f<=NF;f++) c[f]=$f; - start processingcollecting column names from 2ndthe first/header line
for(i=2;i<=NF;i++) print $1, c[i], $i - printing each column (COL...) value "rowwise" regarding to respective pos column value and its corresponding column name.