Long answer:
Java itself has no concept of nullable or not null like kotlin. Therefor there is no way to represent nullability in java directly. Kotlin does however use the @Nullable and @NotNull annotation to save this data, and kotlin writes nullability into the @Metadata annotation.
So back to your question. I think the easiest way is to look at the places where kotlin and java interact. Lets say we have the following kotlin functions:

The java compiler does not care about those annotations. But IDEs such as Intellij Idea or Eclipse should at least warn you about this. Also the kotlin compiler knows that java might call foo1 with null and adds a null- check for each parameter automatically.
Now there is one more important interaction between kotlin and java. Let’s take at the following java function.

Object soemJavaFunction() ...

When calling this function from kotlin, the result of this function is neither Any nor Any? it is Any!. This means it is a platform type, which can be either nullable or not. Basically you decide whether it is nullable or not. You do this simply by either using it directly or doing null checks.
So Any, Any? and Any! are all 3 equivalent to java.lang.Object. They only differ in the way kotlin let’s you use them.