Differentiate celery, kombu, PyAMQP and RabbitMQ/ironMQ
"One of the biggest differences between IronMQ and RabbitMQ/AMQP is that IronMQ is hosted and managed, so you don't have to host the server yourself and worry about uptime."  
Currently there are at least two hosted managed RabbitMQ-as-a-service options: Bigwig and CloudAMQP.  Celery should work well with both.
I want to upload images to S3 server, but before uploading I want to generate thumbnails of 3 different sizes, and I want it to be done out of request/response cycle hence I am using celery. I have read the docs, here is what I have understood. Please correct me if I am wrong.

Celery helps you manage your task queues outside the request response cycle.
Then there is something called carrot/kombu -  its a django middleware that packages tasks that get created via celery.
Then the third layer PyAMQP that facilitates the communication of carrot to a broker. eg. RabbitMQ, AmazonSQS, ironMQ etc.
Broker sits on a different server and does stuff for you.

Now my understanding is - if multiple users upload image at the same time, celery will queue the resizing, and the resizing will actually happen at the ironMQ server, since it offers a cool addon on heroku.
Now the doubts:

But what after the image is resized, will ironMQ push it to the S3 server, or will it notify once the process is completed.. i am not clear about it.
What is the difference between celery and kombu/carrot, could you explain vividly.