So the overall development happened over such a long period of time it's hard to answer. The original GOKb extension was a large undertaking and included significant integration with a back end application - and it was that integration and related functionality that took a lot of the development time.
However, these small bits of functionality probably didn't take long - but I don't know exactly how long. I can tell you from my recent experience adding simple GREL functions[1] (and two of the GREL functions in here were written by me - inArray and randomNumber) that writing a simple new GREL function took only an hour or so - given the rest of the extension framework was already in place.
I think basically the answer is 'how long is a piece of string' as an extension can contain functionality as simple or complex as you want to write - so there is no straightforward answer. Some things are simple, some are complicated :)
For example I'm not sure I'd even know where to start to add metadata to OpenRefine projects :) Although projects already have some metadata I think (there is an existing ProjectMetadata class) - but extending the metadata stored and creating UI to interact with the metadata is all new stuff which would need thinking about. This all costs - either time or money - and of course requires expertise.
My expertise and time are limited - so I can do simple basic things, and through following examples I'm trying to understand how to do slightly more difficult things (for example, at some point I want to pull apart the "Trim all data" function in this extension to understand how I might develop additional functions that act across all cells in the project in one go) - but ultimately I rely on others to develop more complex features.
Not sure how much this answer helps! I guess there are no easy answers here
Best wishes
Owen