I fine that explaining NiFi tends to be difficult, especially if you're an advanced user. This is because NiFi is extremely general purpose. I've used it for many different types of projects. That being said, here's a few use cases that are relatively easy to get started.
1. Move data from A to B
2. Move data from A to B, but perform some intermediate processing in-between (ETL)
3. Grab data from A, write it to [INSERT SYSTEM HERE] (Mongo, Kafka, many others)
4. Periodically run an arbitrary script or program (like cron but you can schedule in seconds)
Those are just some use cases that people tend to start off doing. It's important to note...the above doesn't sound very impressive until you think about the following features:
1. Build these pipeline completely from a UI. You can leverage custom code, but the number of processors that come out of the box is astounding. If you can think of it, it most likely already has something built-in.
2. By default safety nets. Data is backed by a high performance WAL that allows for recovering in the case of a failure.
3. Ability to pause and resume specific areas of a pipeline at any time. For example, you may have a processor that's receiving data and perhaps the database you write the data to is offline (or has moved). Data is automatically buffered on disk so when the DB comes back online, you can backfill the data that you've been consuming. Further, none of the data was dropped in this process.
4. Tunable and verifiable back pressuring out of the box (_very_ hard to get right when writing custom code)
5. Easy to prioritize certain events over others (e.g. higher priority, latency sensitive data)
Lastly, when you start getting comfortable using NiFi, you will realize how general purpose the engine is. Data is represented as a "FlowFile". A "FlowFile" is essentially just a Array<Byte>. This means you can operate on virtually anything. Further, you can operate on large data since its backed by a WAL and NiFi facilitates the ability to stream data from disk when you want to process it. As long as you don't read the entire thing into memory (of course).
Easiest way to get started is to just download the binaries and run it. Then go to the http://localhost:8080/nifi and just mess around. There's plenty of tutorials online (Blogs, YouTube, etc). Once you get comfortable using NiFi, people will be blown away with how fast you can get something up and running. Things that would normally take days or weeks to get into production, you can routinely do it in hours or minutes.
Hope this helps!
edit: You can download from https://nifi.apache.org/download.html. Just unzip/untar the package and run "./bin/nifi.sh run"