The first line backs up &0 (=stdin) to &10.
The next line associates &0 with the file (the file is opened for reading).
Then all following stdin/default reading is from the file. Here it is the read command in the loop.
The reading from the file would stop if &0 were restored via exec 0<&10 .
Usually, instead of the exec association, you see a temporary association:
while read ...
do
...
done < './data/heu/hout1'
After the "redirected" while-do-done block the original stdin is back.