Continuous Delivery is nothing but a small build cycle with short sprints. Here, the aim is to keep the code in a deployable state at any given time. The code or project is not 100% complete yet. The available feature sets are tested, debugged, and made ready to deploy, although may not be deployed at that moment. The focus and key here are to keep the code base at a deployable state. How is this useful? In today’s world, we can't afford to release a buggy project. So targeting smaller features of the same product makes it less time consuming to identify bugs, therefore quicker bug fix time in fixing bugs, most importantly allows us to focus more on building a much more stable product.
How is it different from Continuous Deployment? Well, in this method as soon as the changes made in the product are automatically deployed to production. But this approach works fine in enterprise environments, where the users play the role of 'tester.' This method is quicker, but risky at times.
Now coming down to the last approach, Continuous Integration is merging all code from all developers to one central branch of the repository many times a day trying to avoid conflicts in the code in the future. Here we have multiple developers working on a project maintaining the main branch of the repository as the most current form of the source code, so each developer can check out or pull from the latest code to avoid conflicts.
For more information please go through the following tutorial to get more info about CI/CD: