To begin with, Ubuntu and openSUSE are similar on the grounds that they are Linux, but have some deep down differences.
As for the terms you want to know:
A repository is like a library.
A package is like a book.
Source code is like ... a slightly different book!
To go on further,
A repository is something you can set up which is basically a database of different packages.
A package is basically nothing more than a list of files and procedures/scripts to be run. This can be anything from downloading and copying a few files to huge system wide changes. It is most commonly used for installing applications (and updates to those applications).
Source code (at a basic level, and the non movie sort!) is the code that is compiled in order for you to run applications. Wikipedia gives the best explanation. Basically, there are packages available which installs the source code to an application rather than the application itself.
In addition, as some builds of Linux are significantly different, an application that runs on one may not run on another. To combat this, some places would rather give you the source code to compile yourself instead of building it many times for each release themselves.