Receive : Accepts message data from a service partner. Optionally begins a process by creating an instance of the process.
Reply : Sends a response to a partner identified in a matching Receive activity
Callback : Asynchronous BPEL Process completes its operations and callback the Client with the response message.
If you want to receive a response from a service, you should know the type of service - sync or async. "Reply(Sync)" and "Callback(ASync)" are used to send back the response to the caller. Hence, you'll use "Invoke( If external service is Sync)" or "Receive (If external service is ASync)" to get the response.
You can read about activities in deep and experiment via practical examples to make things clear.