what's the difference between Gameobject and Transform

it seens that both of them works the same…

There’s a pretty big difference, but for starters a “Transform” is a component attached to a GameObject. If you’re scripting, a Transform has x,y,z position values, rotation values, and scale values. These can be expressed in C# as:

Saying gameObject.transform means you’re accessing the transform component attached to a GameObject, which can be misleading when you create an “Empty” GameObject in your scene, and only see a transform.

Using GameObject (case-sensitive) in scripting gives you access to methods that allow you to do pretty much anything, but that’s outside the scope of your question.