I'm confused a little bit. I think the CTRL+P and ChildOf constraint quite same thing. But .... So please anybody explain what is the main difference or behaviuors between the two approach. Sometimes I recognised differences but I can't define exactly why.
The reason to have a ChildOf constraint is for cases where you need to change parenting during animation. Like when a character needs to grab an item, or throw it- at the moment this happens, you can animate the constraint influence and be able to animate the object properly.
You should use normal parenting for everything else, because this method is far simpler, and simply more correct. The hierarchy is visible in Outliner, mostly exporters will work with it e.t.c.