Go through your own code step by step.
When you have a multi-line variable and you do this:
"\e[36m$weather\e[0m"
it adds \e[36m to the beginning of the whole variable. It doesn't add the code to the beginning of each and every line in that variable; just to the first line. So the output is something like this:
\e[36mCurrently in Struer, DK: 8 °C and Cloudy
High: 9 C Low: 7 C Mostly cloudy
High: 8 C Low: 8 C Cloudy, a shower; windy\e[0m
So when you take only the 2nd or 3rd line, they do not come with the color code, because there was nothing that would it there. To make it work the way you want, swap the operations – first extract the line you want, then add color codes to the result:
echo " \e[35mToday.........:\e[0m \e[36m$(echo "$weather" | head -2 | tail -1)\e[0m"