To answer your first question, the first chunk of code is specifically for adding more custom thumbnail sizes. Don’t let the word “thumbnail” trick you, in fact I use the function mentioned above to register large images that fit in very specific places in themes such as custom sized banners and things like that.
In order for your thumbnails to “take” to any changes you made to the settings, via your functions.php file, you will need to regenerate them. You can do so by using the Regenerate Thumbnails plugin, although you will most likely lose any custom cropping. That is most likely why your theme is pointing to the full size image. Currently there is no image at the set size for your thumbnail, so it defaults to the original.
To answer your second question, yes, they are created when you upload them, although there are some plugins you can use to customize the crop after the upload process. And no, you won’t have to re upload all of your images, but you will have to regenerate your thumbnails as mentioned above.
I will say in closing that thumbnails can be a pain, which is why I try to make sure that I nail the sizes I need down before I start any project, however having thumbnails that are the same aspect ratio, but different sizes can really help reduce load time, and strain on a server.