AMQP is a wire-level protocol whereas HTTP is a general purpose protocol built on top of TCP/IP. What does that mean? It means with HTTP you have an enormous amount of overhead when using it to pass messages whereas AMQP is designed to do just this and is very fast.
AMQP is asynchronous whereas HTTP is blocking and synchronous by nature.
RabbitMQ, since it's built on Erlang has clustering built-in, just startup more nodes.
Reliability, with AMQP you can choose what level of guarantee you want when the message is delivered, messages can be persisted which means if you pull the plug from the server, by the time the server started again, that message will still be delivered (whereas HTTP will just drop that message), the publisher will receive a confirmation that RabbitMQ received the message and the consumer will notify RabbitMQ that it is done consuming that message - so RabbitMQ can offer certain guarantees that messages will be delivered whereas HTTP can't do that - at least not out of the box.
Exchanges allows you to forward messages to multiple participants (fanout) or have users subscribe to certain headers (topics) which allows you to send the message the exchange and let the exchange decide where to route the messages to.
The AMQP spec is open just like HTTP and is backed by some large companies: http://www.amqp.org/about/members
For more info see: https://www.rabbitmq.com/features.html