Unfortunately, attachments are always phantom, and do not interact physically, since it is very hard to calculate their actual position with an avatar which is often viewer-side animated so it is positioned and rotated in the viewer way off from the position and rotation the sim knows.
You can detect hits making the arrows physical ( llSetStatus( STATUS_PHYSICS, TRUE ); ) and volume detect ( llVolumeDetect(TRUE); ), but the hits will only register with physical prims and avatars, using the collision_start(integer num) event. Also, there are a number of caveats with volume detect, so you better check it at http://wiki.secondlife.com/wiki/LlVolumeDetect
One often commented problem with projectiles in OpenSim, is that they sometimes pass through the target before they have time to register a hit. This is owing to the script engine (XEngine) and physics engine (OpenDynamics or BulletSim) being different than in Second Life.
There is an improved version of llCastRay in vanilla OpenSim development HEAD and the latest OSgrid releases, but not yet in Metropolis OpenSim. It can not detect attachments, owing to the reason above, but does both avatars (with ellipsoid capsules) and child prims, physical or not. It is slower than llCastRay in Second Life, and needs to be enabled by adding the parameter
UseLlCastRayV3 = true
in the section
There are a lot of other parameters available to customize the new llCastRay V3 to various server performances, scenes and requirements, all explained in the OpenSimDefaults.ini