For issue #2, I am not sure what you tried before, but the icon_url property was returning a url with “http” prefix and since Codepen is served over “https”, you were getting a Mixed Content error message in the browser’s console. In fact, anytime you are trying to use an image with “http” prefix, you are going to get this error in the console and the image will not display.
It just so happens that Weather Underground images you were trying to use can also be served over “https”, so I created a small hack as follows to display the “https” version. I added the var iconURL above your existing document.getElementById(‘weather’).innerHTML = line and added the applicable image tag to make it work. See below for the code.
var iconURL = cObj.current_observation.icon_url.replace('http','https');
document.getElementById('weather').innerHTML = cObj.current_observation.weather + '<br/><img src="' + iconURL + '">';
You definitely need to learn how to view the console in the browser (Ctrl-Shift-I) on keyboard if using Chrome. You will see many errors that will not show up in the Codepen console.