Yes, you can use the is operator with the constant pattern of null to check whether a reference (or nullable value type value) is null or not.
Indeed, in C# 7 I would say that using is null is the most idiomatic way of testing for a null value, because it doesn't use any user-defined operators. Consider this:
string x = GetStringFromSomewhere();
if (x == null) { } // Option 1
if (x is null) { } // Option 2
Here, option 1 will call the == operator overload defined in string. While that should do what you want (and I expect the JIT compiler will optimize it pretty heavily), it's not like you particularly want to do that - you just want to test whether the value of x is a null reference. That's exactly what option 2 does.
So yes, you can use is null for all null checking if you don't have types that perform odd custom comparisons. It's possible to write a class such that x == null and x is null would give different results, but that would almost always be a design (or implementation) problem.
There's no concept of an object being "empty" - and indeed it's not the object that's null. Leaving nullable value types aside for now, it's a reference that's null, not an object - a null value indicates the absence of an object. It's worth distinguishing carefully between objects and references in your mind.
Some specific object types have a concept of "empty" - for example, a string can be empty, or a collection - but those types have specific ways of testing for emptiness. There's no general concept of an object being empty.