Do I need types in a schema and dgraph.type & UIDs in a mutation?

In addition

Yes, you need them. Is strongly recommended that you have a well-defined Schema and types. Of course, Dgraph can handle your mutations and it will be stored, nothing is lost. But, to have some functions working you must to have the Type system aligned. Otherwise, delete(the most crucial one), expand, and so on won’t work for example.

If you already have data on the DB you can use Upsert block (with caution) to add the type tag on the entity. e.g

upsert {
  query {
    v as  q(func: has(user.name)) 
  }

  mutation {
    set {
      uid(v) <dgraph.type> "User" .
    }
  }
}

That way you don’t need to treat your data again outside Dgraph.

The question about the UIDs on the mutation. It depends.
You just need to add the UID in a mutation if you are updating or deleting a known entity. Otherwise, you can use Blank nodes or nothing. Remove the UID key completely and you gonna create a new entity.

If you are new I recommend that you start with A Tour of Dgraph it is straightforward.

Cheers.