Properties that start with a hyphen (like -moz-opacity) are browser-specific extensions. Each browser has their own:
-moz- is Mozilla/Firefox
-webkit- is WebKit/Safari
-ms- is IE8
-o- is Opera
These are basically put in place by the browser vendor to test a new property out before it becomes official. So, they’re not valid (-moz-opacity is not a real property), but they’re not incorrect either – the hyphen prefix is what the W3C recommends for experimental/unofficial properties.
FYI, -moz-opacity was only used I think for Firefox 1. FF2 and 3 support the finalized opacity property, which is just "opacity."
As for filter…that’s a proprietary IE extension. It’s not a standard property which is why it generates errors. If you want, you can move it into an IE-only stylesheet and wrap that in a conditional comment for IE6 users; that way, other browsers will see only the valid code.