Just a swag, I don't see how you could help it. SQL would have to pick up the entire page in order to read the rows to get the pieces of data you want. It's page reads that hurt, not the hunting down of columns within the page. If you were to find that it was really hurting performance you could split the table vertically, that would increase your IO. That would truly be a last resort.
You could also add a non-clustered index on cols c1 & c2. It would also have to cover the query to be useful but would mean the minimum page reads.
The query will use whatever indexes it thinks are best (the view will be incorporated into the query plan as though it was part of the select). If the data to be retrieved is included in the index then the data pages will not be read. Otherwise the data pages will be retrieved and all the row will be read into memory.
Cursors never. DTS - only when needed and never to control.