I wish to exclude all the variants in a vcf file where the first snpeff annotation is either intron_variant or 'splice_acceptor_variant&intron_variant or 'splice_region_variant&intron_variant' or 'splice_donor_variant&intron_variant.

Thank you for the suggestion. I used it just now. No filtering was performed on my input file..furthermore the operator '&&' doing the job does not make sense. Is there a catch somewhere that I am missing?

you want to keep variants where the first annotation != 'intron_variant' AND first annotation != 'splice_acceptor_variant&intron_variant' AND first annotation != 'splice_region_variant&intron_variant' AND first annotation != 'splice_donor_variant&intron_variant'

Actually since | is the OR operator, if any one condition is TRUE, then only filtering will take place.

When && or AND operator is used, it means that if all the conditions are TRUE together, only then filtering will take place. Since, one variant willl have only one effect in the first annotation, I used '|'.

Right, but I believe snpsift filter keeps variants that pass the specified condition(s) rather than filter variants that do not pass the specified condition(s). Look at the examples given on the snpsift filter documentation page