There are two questions, so you are getting two kinds of answers :)
The bash command history has only a passing similarity to the vi regular expression syntax.
^
is the beginning of line in vi. $
is the end of line in vi.
!!:0
is one way of accessing the first word of the previous command in bash
!$
is one way of accessing the last word of the previous command in bash