Yes, it's advanced but not *that* complicated.
First off, what you see is what a tunnel does -- a port (3389 in your case) on your local machine is the entrance to the tunnel that ends at another port on your machine A. You appear to confuse the local interface "lo" (as opposed to, say, eth0) with the localhost: designation. Has nothing to do with the local interface etc. It's just a port on your local machine.
Whatever you manage to funnel into B's 3389 port will show up at A's end of that tunnel. Now it doesn't quite become clear what service you have connected there. I'll use VNC in the example below.
I tunnel my "A" machine's port 5900 (VNC) to B on 3389 (to stick to your port numbers). Now there's a tunnel waiting and listening there. On "A", a windows machine where a VNC server is running, I did
Machine A> ssh -R 3389:localhost:5900 192.168.1.101 (.101 is what we call "B")
Now, on a third "C" machine I log in to the same "B" machine by
Machine C> ssh -L 5901:localhost:3389 192.168.1.101
This now connects the two tunnels, and A's vnc server shows up as C's local :1 display (port 5901) --
Machine C> vncserver localhost:1
will connect through all the tunnels to A's VNC server.
So I guess the short answer is, on machine C do
ssh -L <somelocalport>:localhost:3389 ip_of_B
and you arrive on machine A.
All clear? I hope it helps,