Is it tricky writing a sketch to translate voltage change/resistance change into weight/mass?
Not especially. If the sensor generates a voltage then you will read that via an analog input, and just do some simple arithmetic to convert the analog value to a weight. The exact conversion will depend on the sensor's characteristics but you will know (or be able to find) the sensor's calibration data and from there the code to convert a sensor reading to a weight is quite simple.
I'm not suggesting you use Firmata. The project I linked you to used it to get the data to a PC but I don't think that's what you want here. Just write a normal sketch to measure the weight and interface with whatever display, switches etc you design into your solution.
Some people have had success using cameras which provide a TTL serial output, although the Arduino performance is extremely marginal for that.
Using a camera with a USB interface would be a massively more challenging task, and unless you've already got experience of writing a USB host driver I suggest you forget it - if you have got experience of it, you'll already appreciate the work involved and I expect you'll decide you've got better things to do with the next several years of your life.
If you use a PC instead of an Arduino it will be much easier to do this since you will already have an operating system and, depending what OS you run, may be able to simply use somebody else's drivers. There are small computers such as the RPi which are similar in size to the Arduino and would make a far more suitable platform for this sort of thing.
That motor/driver combinations seems like a reasonable fit, and it's convenient that the driver provides several modes for speed control. These things will be more reliable if you keep them well below their nominal rated power levels, and you can do that easily just by reducing the motor speed/duty cycle. Trial and error will soon tell you how much power you need to get the operating speed you need.
It would be possible to get the motor/gearbox/driver components quite a lot cheaper if you were willing to spend more time fiddling about on that side of things - there are plenty of automotive motor/gearbox assemblies that will generate the sort of torque you'd expect from a hand crank, and can be powered easily via some cheap 12V relays which can be driven by any cheap driver shield/board.
I assume you'd plan to have some sort of temperature feedback algorithm, and that's where you really will need trial and error to see what works. There's a PID library for the Arduino, but that might be overkill for this application and perhaps you just need a proportional control algorithm.
If you want to add scheduled operation, or remote control, or data logging, this all adds to the software complexity but it's all doable and just needs time and effort to develop. I suggest you keep it simple to start with, though.
Does your incoming UDP packet actually always contain a null-terminated ascii string? Aim to prove that it does rather than assume it.
Does the Arduino serial output give you any clue what it's doing just before / during the lockup?
I see you're using the problematic String class. I recommend you stop doing that. You don't need it in any case - it's just providing a wrapper for the standard c-string library functions and it's safer and easier just to use those directly.
There's too much irrelevant code there - I'm not going to trawl through trying to guess which code is executing in your test case. For example, I guess that the IR remote code isn't intended to be directly involved in lighting LEDs.
Write a new sketch which just does the minimum possible work needed to demonstrate the problem. For example, start by turning everything off and see whether the LEDs are actually all turned off. If not, track down which output is in the wrong state and which code is causing it to be in that state.
It would seem sensible to logically or mechanically connect the kb/mouse unit to the display so that they all adjust together. You will need to design the mechanism for that and any actuators if you're planning it to be powered. Then you will need to understand the electrical interface to the actuators so that you know how to control them electronically. Your Arduino won't do the image processing so you will need a computer to do that for you. Face recognition algorithms that just recognise a face (not necessarily your face specifically) are not hard to find. You could use an Arduino or similar to interface between the image processing application and the actuator's electrical interface. Unless the actuator is designed to be controlled electronically you'd also need a driver circuit for it. With this approach the Arduino would be pretty dumb - basically just providing a way for the image recognition application to operate the actuator.
At least in the initial version, you could replace all the electronics with a pair of up and down adjustment buttons.
Have you considered how much easier it would be just to have an adjustable counterweight and locking system so that you can adjust the desk manually to suit you? I imagine it would be pretty convenient to use, and if you had any plans for the desk to suit different people the manual approach would make it far easier to accommodate different people.
Once you've physically separated the different denomination coins into separate hoppers, you can calculate the value in each hopper just by weighing the whole hopper. I assume that's what you're planning to do. I haven't done it myself, but it seems to be straight forward to canibalise a set of electronic kitchen scales, for example as described here, to reuse the load cell and use your Arduino to read it. In your case rather than just using Firmata you'd need to write a sketch to do the arithmetic to calculate the number of coins and their total value, and display that on an attached screen. Attaching a small screen to the Arduino is something else that's commonly done - you can even buy shields with a screen and pushbuttons etc.