With Lisp, you give up on visual cues, such as [], dot-for-member, and others. On the other hand, what you gain is far more valuable: being able to extend the language in a uniform and consistent manner, i.e. macros.
I think the best example is when Python in 2.5 added the with keyword and associated protocol changes to classes (__enter__, __leave__), e.g.:
with open("foo") as f:
do_stuff(f)
Of course, to support this, changes had to be made all over the Python implementation, whereas in Lisp, you would just define a variation on the WITH- theme...:
;;; note: w-o-f is already defined in Common Lisp!
(defmacro with-open-file2 ((stream path) &rest body)
`(let ((,stream (open ,path)))
,@body
(close ,stream))
;;; Example usage: write to a file.
(with-open-file2 (f "foo")
(format f "Hello, World!"))
To better understand the line noise going on in the macro, let's expand the macro:
(macroexpand-1 '(with-open-file2 (f "foo") (format f "Hello, World!")))
... and we get back what we said in the macro definition, nice!:
(let ((f (open "foo"))) (format f "Hello, World!") (close f))
So yeah, you lose some, you gain some -- the ability to work in a higher abstraction level, closer to your problem (there's a reason most code today is not written in assembly language...)

Indeed, Lisp is regular; one relies more on context to inspect the meaning of code, as opposed to irregular languages where syntax has more meaning. In this way, Lisp is kind of like natural language. I’ve heard it hypothesised that some people find it difficult to read regular syntax and this may be a reason why some programmers can’t read Lisp well.