As indicated, Emacs is already the definitive elisp development environment, and internally provides you with most of the functionality you are likely to want.
You might potentially also use ctags/etags to generate an external index for your elisp code base, if you were wanting to jump to function definitions which were not already loaded (and lacked autoload declarations). M-x find-function
RET handles this otherwise. (I bind that to C-hC-f)
The "apropos" functions are key to finding things in general. I use the following bindings for easy access:
(define-prefix-command 'Apropos-Prefix nil "Apropos (a,c,d,i,l,v,C-v)")
(global-set-key (kbd "C-h C-a") 'Apropos-Prefix)
(define-key Apropos-Prefix (kbd "a") 'apropos)
(define-key Apropos-Prefix (kbd "C-a") 'apropos)
(define-key Apropos-Prefix (kbd "c") 'apropos-command)
(define-key Apropos-Prefix (kbd "d") 'apropos-documentation)
(define-key Apropos-Prefix (kbd "i") 'info-apropos)
(define-key Apropos-Prefix (kbd "l") 'apropos-library)
(define-key Apropos-Prefix (kbd "v") 'apropos-variable)
(define-key Apropos-Prefix (kbd "C-v") 'apropos-value)
;; Use prefix arg (C-u) to see more results for a call,
;; or uncomment the next line to do this by default:
;; (setq apropos-do-all t)
;; See C-h v apropos-do-all RET for details.
I also enable eldoc-mode
and I have imenu-ido-goto-symbol
bound (but very rarely utilised).
There are other libraries that may prove useful. I know that some people swear by ParEdit, for example. Admittedly, it's a bit difficult to target a search for elisp libraries which are useful for writing elisp. I'm not sure if the Emacs Wiki has a category for this?