Do I have to release my code if I make some changes to it? [...]
Yes for the GPL, as explained below. But only if you redistributed the code and not as a general public release.
[...] and do I have to let the author know about it?
No, but that's a nice thing to do.
Also is there any difference between commercial use and personal use?
No. There is a difference between mere use and actual redistribution (of source or binaries)
I have looked around for GPL but in some places they say you have to post your code to public and in some places they say you don't have to!
You do not need to post your code publicly. If you are redistributing source or binaries, you need to share your source modifications with everyone that you shared binaries with, only these, not anyone.
Now let's dive a bit in the details... The two key points of the GPL are:
it allows any usage without restriction
it ensures that any user can modify the code and shall share its modifications forever when sharing the code.
So, mere usage and modifications without sharing is not restricted.
If sharing or redistributing, you must notify the user you are sharing the source or binaries with; and make the modified source code available per and under the GPL. You do not need to share this in public (though this is encouraged) but only with the person that received source or binaries from you. That person in turn inherits from the same rights and obligations, and so on all the way down: This effect is commonly called "copyleft".
So what about the BSD? Like the GPL, it allows usage and modification without restrictions. But when sharing the code (for instance as a binary) there is no requirement to share the corresponding source code modifications. Only a requirement to provide credits.
In all cases, there is no requirements to "share" or "credit" things with the general public: only with the persons you share code with.