Answer to part 1: you should try to avoid using friends unless it is absolutely necessary. When is it necessary? Rarely. Probably the most common (and "safest") is if you make a contained class a friend of the containing class. At least, this is the situation in which I've mostly found myself using friends.
Answer to part 2: Yes. It also increases coupling, so is doubly a bad thing
Correct is better than fast. Simple is better than complex. Clear is better than cute. Safe is better than insecure.
-- Sutter and Alexandrescu, C++ Coding Standards
Programs must be written for people to read, and only incidentally for machines to execute.
-- Harold Abelson and Gerald Jay Sussman
The cheapest, fastest and most reliable components of a computer system are those that aren't there.
-- Gordon Bell