можно ли рамки и заливку прямоугольника сделать разными цветами, если да, то как?
Тут все просто, конструктор прямоугольника имеет вид:
pygame.draw.rect(surface, color, (x1, y1, size_x, size_y), width)
То, что вас интересует, кроется в последнем параметре width.
Если он задан то рисуется рамка прямоугольника заданной ширины, если его не задать, то рисуется прямоугольник с заливкой.
Например, чтобы нарисовать прямоугольник, у которого рамка и заливка будут разных цветов, надо нарисовать два прямоугольника:
pygame.draw.rect(surface, color1, (x1, y1, size_x, size_y))
pygame.draw.rect(surface, color2, (x1, y1, size_x, size_y), width)
С закругленными углами сложнее.
Думаю там нужна работа с масками.