1 - no
2 - sometimes
3 - maybe

It entirely depends on what queries you have. First realise that adding indexes will slow down inserts/updates/deletes and consume more disk space.
For starters, I would make sure you have primary key indexes (created automatically if you specified the primary constraint), and foreign key indexes if suitable for your schema. Then, understand how your tables will be queried - the decision to use single column or compound column indexes will depend on the queries. PostgreSQL can use multiple single column indexes on a table but it is more efficient to use a compound column if every column is used in a where clause.
There is a lot of documentation out there (eg
Table of Contents | SQL Performance Explained | Use The Index, Luke!), but maybe the best way to figure it out is to try something, use explain analyze to see what is working and what is not, and try again.