Cool idea. Hope you don't mind if I elaborate with some ideas of my own:
* each wheel/pulley is a seperate construction
* chains can be routed through any number of pulleys in any order, provided there's line of sight between them
* possibly require multiple chains for long stretches
* the winch itself is an endpoint for the chain and requires either power or a dwarf to work (like a screw pump)
* a bracket of some sort for the other endpoint, not sure how we'd designate how much was connected to it
This would open up a whole new world of possibilities for traps.
(Aw. No evil smilie?)
This is an EXCELLENT start. Seriously, I'm impressed by how well you thought this out. I'd like to add on, sorry if it gets too long. I'm going to call the non-winch end of the rope the "hook," for brevity.
Pulleys and winches probably shouldn't accept more than one rope, and ropes shouldn't be allowed to loop back to the same pulley. It could potentially get very confusing.
The winch should have these jobs:
* Attach rope -- only allowed when no rope already attached. The interface should be similar to other mechanical attachments. User first picks a rope, then picks from a list of pulleys with line-of-sight to the winch, and can keep choosing unused pulleys with proper LOS. You could also not select any pulleys, and let the rope hang directly from the winch.
* Winch in -- retracts rope by one tile, as long as the hook extends past the final pulley. The hook shouldn't retract through a pulley.
* Winch out -- extends rope by one tile, as long as the hook isn't already touching a floor. Should be as easy as pulling a lever, i.e. quick and effortless.
* Winch in completely
* Winch out completely
* Release rope -- rope disconnects and falls straight down from the hook's current position, allowing a new rope to be connected
The hook hangs from the final pulley, but it can't hang straight down through the same tile, since the pulley has to be built on a floor tile. It would have to hang down through an adjacent empty tile instead. So maybe when you're attaching a rope to a winch, after selecting pulleys, you would choose a "hang direction" for the final pulley (N, S, E, W). Or, maybe you could rotate the pulley at any time like a ballista. This applies to winches too, in case the rope is hanging directly from the winch.
For simplicity, winches probably shouldn't drag things horizontally. The hook should hang vertically and only move up and down. It would get way too complicated to have ropes draping across the ground, etc.
Attaching objects to the hook -- lots to think about here. Certain item types could attach directly, like bins and cages. You'd probably have to use a trade depot-style interface (accessed from winch building) to select the items. The dwarf attaching the item stands next to the hook, wherever it's hanging.
Diagonal ropes shouldn't be too hard -- the game already knows how to approximate diagonals for LOS, patrol waypoints, etc. ASCII slashes could be used for displaying them, like for diagonally flying projectiles.
Should ropes block movement or not? I don't think axles do, so maybe not.
Elevators would be cool but making dwarves use them intelligently would be a fucking nightmare. In fact, most of the OP's ideas -- moving big sections of wall, etc. -- would be extremely difficult, probably ten times as hard as the relatively simple stuff I'm suggesting. Still, it's a great basic idea and dwarfy as hell.