If the project is licensed under the GPL, all the code in it is licensed under the GPL. The author is not precluded from later relicensing the non-GPL portions of the project under a different license - it's their code, they can release it under whatever license they want - but there will always be a version of that code that is under the GPL.
This is true, but if you dual license like this, your code will also carry another more permissive license, like Apache, BSD, or MIT, without an explicit re-licensing at a later date. It (that code only) can then be used under the more permissive license straight from the GPL-marked project. To convert from a GPL-licensed project, the user would only have to replace the GPL-licensed components.