If you just create an app for personal use and you are not providing it to others, then you don't need to license your app.
If you want to provide your app to others, you need to make it clear what the others are allowed to do with the code you wrote. Informing people about their rights and obligation is done by means of licensing, which is nothing more than adding a license text to your code.
When you are using multiple libraries in your project, then you need to make sure that all licenses of the various libraries and your own code are compatible with each other. If the licenses are not compatible with each other, then you can't meet all the obligations that the licenses place on you and you are not allowed to distribute your app.
Permissive licenses (like MIT, BSD and Apache) are generally compatible with each other, if only because they place few requirements on you.
Copyleft licenses, like GPL, have more compatibility issues, because they place requirements on a complete application, even if only a small library is actually licensed in such a way.
Because copyleft licenses extend their requirements to the complete application, it is generally advised to use the GPL license for your own code if you use a GPL-licensed library.
The GPLv2 license is indeed incompatible with the Apache license due to some patent-related clauses in the Apache license that are not allowed under the GPLv2 license, and the GPLv2 license requires that the whole app adheres to the terms of the GPLv2 license.
If the GPL-library is actually licensed as "GPL version 2 or later", then not all hope is lost. The GPLv3 license is compatible with the Apache license, and the "or later" part on the GPL license allows you to treat the library as if it was originally released under the GPLv3 license.