I'd say that every co-worker is a colleague, but not every colleague is a co-worker.
The usage depends on context. Within a company, my co-workers would be the people on my team (and likely, people that do a similar job to mine).
When talking to friends about my job, I could refer to all people at the company as my co-workers.
Colleague either is someone you work with in the same team, department or company (again, depending on context) but it can also be someone who works in the same industry or who has a similar job.
The prime minister met his European colleagues at the summit this Wednesday.
In this case, he met prime ministers from European countries. Not people he works with in the same team or office or government.
In that context, the words counterpart is sometimes used when we refer to a specific colleague:
The British prime minister met with his German counterpart on Friday.
Again, these two are not co-workers, but the are colleagues.
If I send out an e-mail within my company to invite you to have a drink with your colleagues, I mean your co-workers; people that work at the same company, maybe even ones in different jobs.
If I create a facebook page where, say, Java programmers can meet their colleagues, it means people that all share the same (kind of) job, not co-workers.