1: It's wordy. Larry Wall's famous statement on it is: 'I knew I’d hate COBOL the moment I saw they’d used “perform” instead of “do”.'
2: It's Crufty. Lots and lots of odd corner cases that are there because it made sense in the 70's, as well as decisions that used to be standard: All variables have to be declared at the start of the program, for instance. (With strong typing.)
3: It's finicky. The position (not the indentation) on the line matters, you have to declare things like your input and output formats formally (and separate from where you use them), etc.
COBOL is an excellent example of design-by-committee and then 'accumulate features as needed'. It's object-oriented features are a great example: Bolted on as an obvious afterthought, at a weird angle from the rest of the language, but yes it can be used. It all works, and you can write programs in it, but it's like being forced to write a bad instruction manual.
What it can do that other languages can't, mostly, is run on Big Iron with legacy code from before I was born. It has some decent features for financial markets (decimal numerics are supported natively, for instance), but mostly it's that it's been in banks and big institutions for decades and it's cheaper (and less risky) to hire someone to support it than to hire teams to rewrite their entire codebase. It works, and has been working, basically forever in computer terms. My mom learned COBOL in college, on punchcards. The language hasn't changed all that much since then. (For good and bad.) It's unlikely ever to be 'cool', but it's also unlikely to go away anytime soon.