As you already know, value of $1 that passed to add.pts alias is $+(#,.,$nick).
If # is #channel and $nick is nickname, then $1 will be #channel.nickname.
If you use $read(reglist.txt,nw,$nick), it will return $null because $nick itself is not passed to add.pts alias.
If you use $read(reglist.txt,nw,$1), it will return $null as well because #channel.nickname is not exists in reglist.txt. reglist.txt contains only nickname list.

So we need to use $gettok(string,N,C) to 'catch' the nickname from #channel.nickname.
$gettok() is token identifier. Token is a string that separated by any single unique character.

As you can see string #channel.nickname is separated by dot(.) as a single unique character.
So if you //echo $gettok(#channel.nickname,1,46) you will get #channel as token 1, and //echo $gettok(#channel.nickname,2,46) you will get nickname as token 2.
Why not use $gettok(#channel.nickname,2,.)? Because mSL by design use ascii value of dot(.) which is 46 instead of character itself.
You can find out ascii value using //echo $asc(.)

So to catch nickname from $1, we use $gettok($1,2,46) or $gettok($1,-1,46).
If you use positive value for N, it will catch token from left to right. Negative value will catch token from right to left.

I don't use $gettok($1,2,46) because #channelname can has dot(.) as part of channelname.
For example, if your channelname is #cool.bramzee then $1 will be #cool.bramzee.nickname.
$gettok($1,2,46) will return bramzee as token 2 which is giving wrong result.
So use $gettok($1,-1,46) will be better for your case.

You may want to read help file /help $gettok or google "$gettok mirc tutorial" to understand better.