difference b/w various commands for getting root access in terminal
From man su:

-l      Simulate a full login.  The environment is discarded except for
        HOME, SHELL, PATH, TERM, and USER.  HOME and SHELL are modified
        as above.  USER is set to the target login.  PATH is set to
        ``/bin:/usr/bin''.  TERM is imported from your current environ-
        ment.  The invoked shell is the target login's, and su will
        change directory to the target login's home directory.

-       (no letter) The same as -l.


As for su versus sudo, it's generally accepted in Apple circles that sudo is the preferred method of working in root. By default, su is disabled on OS X (as is the root account). There are only a few occasions when I've had to enable root to get things done.

For more information, I recommend reading both manpages.

man su
man sudo