I'm not sure what you mean by verify if the code has been properly obfuscated, but you could do a simple differential analysis. Compile the source without proguard and identify the important code, and then look at that same code with proguard enabled. You already use some of the tools I use when analyzing Android apps. I would recommend using dex2jar in combination with JD-GUI however.
So you have your apk file. Use dex2jar to extract the contents.
sh ~/android_re/dex2jar-0.0.9.15/d2j-dex2jar.sh ~/androidAPKs/myapp.apk
This will generate a jar file for you. You open this jar file with JD-GUI and identify the location of the package and class you obfuscated. If youre able to find the name of that class, your obfuscation was not successful. This information should not be readily available the way you wrote the code.
As far as your .so file is concerned. It can be reversed using IDA pro and a hex editor.
I am actually in the middle of a research project on creating a technique to successfully add code functionality to the .so files. If my method works, I will be releasing this information publicly to the community. But right now, it requires some skill with ARM assembly. Another drawback is the fact that it is actually slightly difficult to add code since there aren't many empty locations to add useful code to in an elf shared object.
But I have been able to successfully change some logic code in .so files consequently changing the apps behavior, so if you have some critical code, I would be mindful of that.