Under in-workshop a crafter brings the necessary reagents to the workshops and spends some time working on them. At the conclusion of this brief work time the reagents are turned into an intermediate product which can not leave the workshop. A timer will be started and at the conclusion the intermediate becomes the final product and can be removed from the workshop normally. Depending on the nature of the workshop an intermediate product being in the workshop could block the start of a new work cycle. Because the intermediate can not leave the workshop it is not listed under stockpile selector menus, in addition a workshop can not be disassembled until it is empty of intermediate products. Charcoal making and bread baking would fall under this plan.
I like this idea. Maybe bread-baking or charcoal-making could generate periodic "Tend oven" or "Tend furnace" jobs which only take a few seconds? The cook/woodburner could get some other work done in between, but if the jobs are left undone, the bread can burn or the charcoal turns out shitty or whatever.
I'm not sure you really need an intermediate product for in-workshop jobs, though. If the intermediates can't leave the workshop, they aren't important, I think.
In a post-workshop scenario the same intermediate product is created from reagents at the conclusion of the crafting timer but the intermediate can immediately be removed from the workshop. The intermediary product will still have a timer that starts at the point crafting is completed, upon reaching completion the product changes to the final state. This will require the intermediary to be in the stockpile system so it can be moved and organized effectively. Brewing of alcohol will be the main product using this system.
You could take this a step further and, instead of using a strict timer, adapt the rot system so that the item can track its own state change. Presumably there are some material attributes squirreled away somewhere in the source code that control susceptibility to rotting and what gets produced -- for example, the game knows how to turn raw fish into rotten fish. Maybe this could be adapted to drinks so that dwarven beer wort (unfermented beer) "rots" into proper dwarven beer as long as it's stored under the right conditions. You could also use it for pickling, the production of vinegar, etc. It's hard to say how this would be implemented, though -- if rot products are currently part of hardcoded material definitions, then it would be easy, but who knows.
footkerchief: Consider adding this to your reaction plans, I could see a few tags providing a lot of flexibility, [CRAFT_TIME] would determine the time the crafter must expend using units already used for [GROW_DUR] of plants. [INTERMEDIATE_PRODUCT] would specify the name of the intermediate product and the time units needed for it to age/transform into the final product (limit of one intermediate or you might use some kind of ID matching system to correlate multiple intermediate and final products). If no other tags are provided then a post-workshop system is used, but if [INTERMEDIATE_IN_WORKSHOP] is added then in-workshop rules are used, and if [INTERMEDIATE_BLOCKS_WORKSHOP] is added the additional effect of the intermediate's presence preventing a new round of work from starting.
Yeah, crafting time should be modifiable for reactions (although I'm not sure how the game currently handles the "more skill equals less time" thing). Maybe for in-workshop jobs, the crafting time could refer to the initial "setup time" -- mixing the dough or whatever -- and then you could specify an additional periodic job with its own "crafting time": [PERIODIC:tend oven:5:10:2000], with 5 being the total number of periodic jobs generated, 10 being the time taken by the "tend oven" job, and 2000 being the interval between jobs (units are completely made up, of course). This would require a generic way of handling failed jobs, but there's a whole thread on that already.
Basically I think your in-workshop/post-workshop idea is great, but I'm drawing a harder line between the two.