My issue was coming from the complexity of my camera setup, here's the basic solution - basically had to get the screen coordinate of the widget projected to the gui camera. Then I had to get the screen coordinate of the part projected to the player camera. Then I could create a Vectrosity line (need to record the lines to alter them later, but for now it does what I wanted). But another issue with Vectrosity is that you need to make sure that its camera depth is less then the NGUI camera depth or it will blow away everything in the NGUI layer, no matter what I try. Here's a bit of rough code to generally get what I needed:
var partCam:Camera=master.camera;
var guiCam:Camera=gameObject.GetComponentInChildren(Camera);
var guiTransform:Transform=wwi.GetComponentInChildren(WeaponMenuWidget).background.transform;
var p1_3d:Vector3=guiCam.WorldToScreenPoint(guiTransform.position);
var partTransform:Transform=child;
var p2_3d:Vector3=partCam.WorldToScreenPoint(partTransform.position);
var p1_2d:Vector2=new Vector2(p1_3d.x,p1_3d.y);
var p2_2d:Vector2=new Vector2(p2_3d.x,p2_3d.y);
VectorLine.SetLine(Color.green,p1_2d,p2_2d);
var vlcam:Camera=VectorLine.GetCamera();
vlcam.depth=40;Note I've hard coded the depth - i'll probably just change it to be the ngui camera depth minus one.
Here's what I was trying to do - get the green lines from the weapon selection boxes to point to the parts - not perfect yet - I need heads and tails on the line, but I'm on the way again!

Thanks for the suggestions!