Hi! By looking at your code, i suppose that the problems are:
1. The crosshair at (0,0) is the PC crosshair. In the cursor controls group you set the PC crosshair position to (mouse.x , mouse.y), however on mobile these expressions default to zero (since you don't use a mouse on mobile devices).
2. the touch crosshair position is reset when the joystick is dropped, but in your events you move it every tick whithout checking if you're actually using the joystick or not.
To fix 1. use the PlatformInfo plugin to detect wether you are on PC or on mobile. If you are on mobile, delete the PC crosshair.
To fix 2. ensure that you are dragging the joystick before moving the crosshair (just add a is Dragging Joystick condition on the first event on joystick controls).
Hope this helps.