Licensing is very easy and very difficult at the same time.The easy part is this:
Each file has a license. It can be a different license for each file (not recommended, but theoretically possible).
For packages that already have a license, you don't have a choice (unless its license says otherwise, but that never happens). For your own files, you have free choice. You have to make clear which license applies to which file.
Thus the answer to
(probably) Last question. If I decide to go for GNU GPL v3.0 does it applies only to source and binary file or for whole package (that includes source, executable, image and sound files used by my app) ?
is, 'you decide for your files'. However there is a catch, read below.The difficult part here is this:Once you made a choice, every further question is license-driven
Basically, you have to obey all rules stated by all licenses that you use (for the files to which the license applies).
If it is required by a license, you have no choice. If it is forbidden by a license, the answer is "no". If it is allowed by all licenses involved, you can decide either way.
So the answer to
Also should I include licenses of libs that I used?
is 'check their license'.
However, you are allowed to do more than what the license demands.
As a matter of respect for other software authors, I'd add each 3rd-party library verbatim in its own directory separately from my own code, give them credits and state the originating site in the README file, even if its license doesn't require it.
Giving a library its own directory has some other nice properties as well. You probably don't change that part, so keeping it separate reduces clutter in your own code. Also, for stating which license applies to which files, a separate directory makes life a lot easier. Also, updating to a newer version of those libraries is easier.
My project: Messing about in FreeRCT
, dev blog
, and IRC #freerct at oftc.net