For rectangle and triangle collision detection,
I think you don't really need to calculate the edges. You can simply check whether or not any of the 3 vertices of the triangle is in the rectangle. If yes, then it's a collision.
This method is simpler and faster, which may also solve your problem no.3 maybe?