I read about bound service and AIDL based service on Android developer guide
Both seem to allow other components to bind to and perform Interprocess communication
Bound service allows components (such as activities) to bind to the service, send requests, receive responses, and even perform interprocess communication (IPC).
AIDL (Android Interface Definition Language) is similar to other IDLs you might have worked with. It allows you to define the programming interface that both the client and service agree upon in order to communicate with each other using interprocess communication (IPC).
So what is the difference ?
AIDL is just one way to communicate with a bound service. There is no such thing as a 'AIDL based service', it's just a bound service that returns a Binder generated based on an AIDL interface.