For these kinds of situations I decided to take math lessons. It is possible by using various formulae. You can formulate a line if you know positions of two dots on it. You can do this for two lines and then use the two functions in a mathematical expression to decide if the collide and where they collide.
I am not there yet but I will surely go. In the meantime, it seems I will have to fiddle with various algorithms and values in them.
For now, you could use a grid, and then check each square to see if they are colliding with both the lines, but this would cause problems with low-angle crossings. If you are going for angles closer to 90, it should give an estimation. Even if you got more than one crossing grid square, you could just find the middle point between their locations to increase accuracy.