%%a, %%b etc are generally used in FOR loops, such as: for %%a in (*.*) do echo %%a
You can use any letter you want, it doesn't matter.
%1, %2 etc are used on the command line to specify optional arguments.
Take for example this script:
@echo off
set filename=%0
set arg1=%1
set arg2=%2
echo %arg1%
echo %arg2%
echo This file is called %filename%
save that as script.bat, then on the command line: script testARG1 testARG2
The following would be echo'd to STDOUT:
testARG1
testARG2
This file is called script.bat
You can get more info on the use of these variables with the following commands:
for /?
set /?