Try this:
C-u C-x d
This let's you enter arguments for how diredDired should list files. By default it says "-al"-al at the prompt. Add "R"R to that, ending up with "-alR"-alR. Type RETRET.
Select/type a directory and then press RETRET.
This will recursively open all directories from the one you select, and below.
From here, type % m% m to mark all files matching a certain file name pattern. I also often then type tt and then kk to kill (hide) all files I am not interested in. Type tt again to mark all files.
As far as actually opening the files, I don't think there is a standard way to do it, but you can easily define a new command to do it (place it in your .emacs.emacs file):
(defun dired-find-marked-files ()
(interactive)
(dolist (f (dired-get-marked-files))
(find-file f)))
Most probably someone has already included this in some nice dired enhancmentDired enhancement package, but it's fun to do it yourself too ;)
Enjoy!