should you create indexes on col1, col2 and col3 (thus creating 3 indexes)? NO. You will have 2 unused indexes taking up space. As you noted a query can only use one index at a time. So the better choice is to figure out how your select queries will be using indexes and which indexes each will use.
No you create a compound index.
create index idx_table_compound on table (col1,col2,col3)