AFAIK - ( and I read a lot about it), asynchronous methods (not asynchronous delegates !) exists to solve the \"thread is blocked\" problem when
Async methods are not just for IO - they can be for anything - and yes, it's just another way of saying that the work of the method is executed in a separate thread. Any method where the calling thread offloads the work to a separate thread can be correctly called an "async" method. It is the same as Task and ContinueWith -- ContinueWith is just another way of talking about a callback, really.
The word "asynchronous" simply means "not at the same time" - it can refer to any actions that happen independently of each other.