Hola Francisco,
http[s]?:// significa que debe empezar por "http://" ó "https://". El [s]? quiere decir que la letra S es opcional.
[a-z0-9-\.]+ quiere decir que el principio de la url tiene que contener, hasta el primer punto, letras y/o números. Es decir, lo contenido entre corchetes. Los caracteres precedidos por barra invertida ("\") tienen que coincidir exactamente. Es el caso del punto.
\.[a-z\.]{2,5} significa que del segundo al tercer punto de la url solo puede haber letras. Eso se puede repetir de dos a cinco veces.
(/[a-z0-9%\-_\.\?=&@#]*)?, finalmente, quiere decir que tras la url, opcionalmente (por el "?"), puede haber letras, números o los símbolos que ahi aparecen, combinados de la forma que sea, para indicar variables u otros parámetros de ruta.