Bot: Just a user account, with normal login and password, that we call bot because it is used by some automatic program. Nothing particilar in the Matrix protocol itself.
Appservice: Some application (on the Internet or local) that the server is configured to listen to and give special priviledges. See it like a plugin, can reserve a namespace for usernames (like only this appservice being able to register names starting with @telegram_).
Bridge: Just some system, program or anything really that we call bridge because it connects two chat networks. It can utilize appservices and/or bots to work, but again it's a common name not special thing in Matrix.
Integrations: A really forgotten thing in the recent Matrix development, but still somewhere there. If you ever used old Element there is a chance you opened integrations menu. It's a graphical interface in the end-user app side to graphically invite or manage bots or other things. They also have widgets to pin website on the chat for users to easly interact, like a calendar, it is mostly use to integrate Jitsi calls as Matrix-native calls are still developing.
So integrations and appservices are in the protocol. Bots and bridges are just names.
One bridge can use multiple things. Can use a normal client-server API to act like a bot (again, just some account) to listen to and write messages. Can use appservice API to bypass rate limits, reserve username space and have permissions to spoof it's avatar and name. Can use integration to give a menu for management, but I haven't seem it used.