Regarding menus for authenticated users only
What I usually do is:


Install and enable Taxonomy Access
Create a vocabulary called Access
Create 2 terms in the new Access vocabulary: Public and Private
Attach the term reference fields for Access vocabulary to each node type you wish to protect. You may want to set the default value to "Public".
Go to Taxonomy Access configuration page and set D (deny) View access to Anonymous users on Private term. Leave the rest of the options (update delete view tag etc) I (ignore).
Configure the access control for Authenticated users and set A (allow) View access to Authenticated users on Private term, and set I (ignore) for all else.
Now all you need to do is set Private on nodes you wish to protect, and set Public for all else.