Since the language code will always be between slashes, and that won't happen anywhere else, you don't really need to match the beginning of the line.
For the first one, try this (without the ^) :
RewriteRule /(en|gr|de)/assets(.*)$ assets$2 [L,QSA]
For the second one:
RewriteRule /(en|gr|de)/(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
If you want to be conservative (belt and suspenders), you can do this:
RewriteRule ^.*/(en|gr|de)/assets(.*)$ assets$2 [L,QSA]
RewriteRule ^.*/(en|gr|de)/(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]