Assuming none of the file names contain whitespace, single quote, double quote or backslash characters (or start with - with GNU grep), you can do:
grep -l word * | xargs grep word2
Xargs will run the second grep over each file from the first grep.
With GNU grep/xargs or compatible, you can make it more reliable with:
grep -lZ word ./* | xargs -r0 grep word2
Using -Z makes grep print the file names NUL-delimited so it can be used with xargs -0. The -r option to xargs avoids the second grep being run if the first grep doesn't find anything.
grep? GNUgrep? Are you on Linux, Solaris, the BSDs?