Numbers don't convert to string automatically: you have to use STR$ or FORMAT$.
What I have said about the dimensions of an array also applies to DIM MyArray(16) AS LONG AT VARPTR(MyLionMatrix(1,1)), that should be DIM MyArray(24) AS LONG AT VARPTR(MyLionMatrix(0,0)) if you use a zero-based array.
I have modified the program, using one-based arrays to avoid confusions:
#COMPILE EXE
#DIM ALL
FUNCTION PBMAIN () AS LONG
DIM MyLionMatrix(1 TO 5, 1 TO 5) AS LONG
DIM s AS STRING
DIM MyArray(1 TO 25) AS LONG AT VARPTR(MyLionMatrix(1,1)) '
MSGBOX "hey lionMatrix!"
DIM Counter AS LONG
FOR Counter = 1 TO UBOUND(MyArray)
MyArray(Counter) = Counter
NEXT
DIM LionsOut AS STRING ' LONG
FOR Counter = 1 TO 5
LionsOut += FORMAT$(MyLionMatrix(Counter,1)) & $TAB & FORMAT$(MyLionMatrix(Counter,2)) & $TAB & FORMAT$(MyLionMatrix(Counter,3)) & $TAB & FORMAT$(MyLionMatrix(Counter,4)) & $CRLF
MSGBOX LionsOut, %MB_ICONINFORMATION, "matrix ok test! "
NEXT
END FUNCTION