abs() vs abs[] for fby "while" all() vs all[]

https://learninghub.kx.com/forums/topic/abs-vs-abs-for-fby-while-all-vs-all

May I ask how does abs() differs from abs[] in a select statement using fby clause?

q)tab:([] sym:g1g3g1g1g2g3; price:-2.5 2 -0.5 -0.2 3 4)

q)tab

sym price

---------

g1 -2.5

g3 2

g1 -0.5

g1 -0.2

g2 3

g3 4

q)select from tab where abs(price)=({abs max x};price) fby sym

'type

[0] select from tab where abs(price)=({abs max x};price) fby sym

^

q)

and also similarly, in my qsql, if I use all with square brackets, it throws a rank error but all() works fine

select from xxx where all[col=a;col2=b] //rank error
How do I know when to use [] vs ()
Thank you!