Bluetooth has several protocol layers which form the Blue‐tooth protocol stack.
Controller and host stacks are the two main stacks in Bluetooth, where the controller stack contains the radio interface part, and the host stack deals with the high level data.
Controller stack functionality includes (not limited to): CRC generation and verification, AES encryption and preamble, access address, and air protocol framing.
If the controller stack is separated physically then an HCI layer (Host Controller Interface) will handle the communication between the host stack and controller stack. Mostly, it will be using USB or UART (using AT commands).
You can find in the market 2 types of Bluetooth solutions: 1- SoC: A single IC runs the application, the host, and the controller.
2- Dual IC over HCI: One IC runs the application and the host and interface using HCI with a second IC contains the controller (physical layer).
The well known nrf51822 IC is an example of SoC type, and HC-05 is an example of dual IC over HCI type.
finally, several Bluetooth stacks are there: BlueZ for Linux, BlueDroid for Android and Apple has its own one.