四角形を動かしてみます。まずは、ソースを載せます。
import pygame
import time

# 初期化
pygame.init()
pygame.display.set_caption("pygame アプリ")
surf = pygame.display.set_mode((480, 480))

# 色を定義しておく (タプル:固定)
COLOR_MAIN = (255, 196, 0)
COLOR_BG = (32, 32, 32)

# 座標, サイズ (リスト:変更可)
pos = [20, 80]
size = [64, 64]
speed = 2

# 閉じるを押すまでループ
running = True
while running:
	# 座標更新
	pos[0] += speed
	# もし画面端にたどり着いた場合は反転
	if pos[0] > (480 - size[0]) or pos[0] < 0:
		speed *= -1
	# 描画
	surf.fill(COLOR_BG)
	pygame.draw.rect(surf, COLOR_MAIN, (*pos, *size))
	pygame.display.update()
	# ウェイト
	time.sleep(0.015)
	# イベント
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			running = False
上記を実行すると次のようになります。

前回との差分箇所を説明します。

# 色を定義しておく (タプル:固定)
COLOR_MAIN = (255, 196, 0)
COLOR_BG = (32, 32, 32)
今回はあらかじめ使用する色を定義することにしました。なお、要素を ( ) で囲むとタプルとなります。変更ができないオブジェクトです。

# 座標, サイズ (リスト:変更可)
pos = [20, 80]
size = [64, 64]
speed = 2
座標とサイズもそれぞれ定義しました。[ ] で囲むとリストとなります。こちらは変更ができます。また、speed を追加しています。後に使用します。

while running:
	# 座標更新
	pos[0] += speed
	# もし画面端にたどり着いた場合は反転
	if pos[0] > (480 - size[0]) or pos[0] < 0:
		speed *= -1
	# 描画
	surf.fill(COLOR_BG)
	pygame.draw.rect(surf, COLOR_MAIN, (*pos, *size))
	pygame.display.update()
「動かす」とはつまり、「毎描画毎に座標を動かす」こと他なりません。pos[0] を毎描画毎に書き換えて、位置を更新しています。リストは [0] というような記述を後ろに足して、要素を指定して処理します。
「画面端で反転」はつまり、「座標が 480-自身の大きさ となったら、速度の符号を反転させる」です。

さて、pygame.draw.rect(surf, COLOR_MAIN, (*pos, *size)) が前回の書き方と異なることに着目してください。COLOR_MAIN は最初に生成した RGB が 3 つ格納されたタプルです。
*pos*size は座標とサイズです。さて、* はなんなのでしょうか。説明します。

* なし
([20, 80], [64, 64])
* あり
(20, 80, 64, 64)
要は、* を付けると [ ] が外される訳です。関数の引数の型に合わせる際に使うことがあります。