Calculate 3D Vertices with Python
Alright, now I got a good solution, I wrote a function to calculate the vertex3d from 3d like this, that takes the roation of the viewport into account:

def get_3d_vertex(context, vertex_2d):
    region    = context.region
    rv3d      = context.space_data.region_3d
    view_rot  = rv3d.view_rotation
    overlay3d = context.space_data.overlay

    dir = get_view_direction(context) * -context.scene.draw_distance    
    vec = region_2d_to_location_3d(region, rv3d, vertex_2d, dir)


When the rectangle is created I use the 2d mouse points to calculate all points of the rect:

def create_rect(self, context):
    rv3d      = context.space_data.region_3d
    view_rot  = rv3d.view_rotation

    self._vertices.clear()

    self._vertices.append(self._vertex1)

    # self._vertex1 and 3 are already in 3d space    
    vertex2 = (self._vertex1_2d[0], self._vertex3_2d[1])
    vertex2 = get_3d_vertex(context, vertex2)

    vertex4 = (self._vertex3_2d[0], self._vertex1_2d[1])
    vertex4 = get_3d_vertex(context, vertex4)  

    self._vertices.extend([vertex2, self._vertex3, vertex4])