CB Activity provides a complete activity streams. When you view your profile you see your activity, your connections, and anyone you are following. When you view another users profile you see only that users activity or activity specific to that user by asset.
Is there a way to have a public wall and a private wall?
You can have as many activity streams as you want. You can create new ones as Fields in CB > Field Management or as entire pages using the Community Builder > Plugin and selecting CB Activity as the Plugin menu type. You can protect the streams using CB Privacy. Currently you can not have per activity privacy controls, but can only protect the entire stream.
Also what's the difference between The regular wall and the ProfileBook wall. Should I use only one, or both?
Don't see the point in using both. CB Activity provides significantly more functionality.