How does the "skip" method work for upsampling? (fully convolutional NN)
So as you already know, the convolutions extract some local information from the image, but for some decisions you need more global info. This is what pooling is supposed to do, it basically erases some locality information. In plain classification this is obviously necessary, because the question, if there is a cat in a picture, is a question about the entire image, not about one or a few pixels. This is why in the end of the classifier you get rid of all locality by adding fully-connected layers.

For semantic segmentation it is not quite as simple, because the output is supposed to still have locality information in it. You actually are just doing a pixel-wise classification and for each pixel the broad context matters. To decide, if a pixel is part of the cat in an image requires information about many pixels within a certain distance from the pixel in question. So this is why pooling layers are used for semantic segmentation as well. But pooling also reduces the image size, that's why upsampling and transpose convolutions are used to get back to the original size.

But there is a downside. As we said, pooling erases some information about the locality, in other words, it reduces the resolution. Once this information is gone, no combination of upsampling and transpose convolutions is going to get it back. Transpose convolutions can only learn to do this the least bad, kind of like a pseudo-inverse matrix. This limits the resolution/detail you can expect on your segmentation mask.

This problem is solved by skip connections by providing the relevant locality information where it is needed. Whenever you do upsampling, you find the last layer before the pooling, where the image still had the same size and simply add it pixel-wise to the upsampled image. This pixel-wise connection is implemented by using a 1x1-convolution in the link you posted. This way, the now upsampled feature map has both the locality detail from before pooling, but also the broad context info from after pooling. This allows for much better detail in the segmentation mask.