This API allows to visualize tracking for progress of long lasting tasks.

The usual usecase goes like this:

ProgressHandle handle = ProgressHandle.createHandle("My custom task");
...
// we have 100 workunits
// at this point the task appears in status bar.
handle.start(100);
...
handle.progress(10);
...
handle.progress(50);
...
// at this point the task is finished and removed from status bar
handle.finish();

There are several options on how detailed visualization you want. All these usecases are supported by methods of {@link org.netbeans.api.progress.ProgressHandle} class. Additionally it's possible to include textual information about current progress.
If the task allows to be cancelled by the user, then you have to implement {@link org.openide.util.Cancellable} interface and pass it to the {@link org.netbeans.api.progress.ProgressHandle} when creating the handle.