I am not sure what your intention is (you didn't make that clear), but if it's to chmod to 700 all the files that match the pattern, then, except for your typo (;\ instead of \;), your command seems to work as intended.
However:
when it finds a file containing that string
grep -qgives me0so another exec executes but should not.
Yes, it should do. 0 means success means true, so find continues to evaluate its expression, and the second -exec runs. 1 (or any value other than 0) would mean failure would mean false, so find would short-circuit its evaluation (there is an implicit logical AND between juxtaposed expressions) so the second -exec does not run.
Why does it work
Check the manpage for GNU find:
expr1 expr2
Two expressions in a row are taken to be joined with an implied "and"; expr2 is not evaluated if expr1 is false.