What makes them such a big deal? Why not have an API to send and request money and then just use any language of your choice with said API to manage money?
Smart contracts are programs on the blockchain itself.
While it's definitely possible to create an API as you described, you have to trust that the program is running as the creator claims it does. In the same way, it's simple enough to create a monetary system in any language--but how do you trust it?
With a smart contract, every node verifies its execution, in the same way that every node verifies every monetary transaction. This means that, theoretically speaking, the operation of a smart contract cannot be interfered with by any party. This isn't infallible (see: bugs, hardforks, the DAO) but it's unique compared to the average off-chain program.