Unity3D consists of a game engine plus a (fairly rudimentary) 3D editor. It provides meshes, textures, shaders, terrain, cameras, animations, particle systems, audio samples, and other kinds of object that are useful in video games. It includes PHYSX (a proprietary physics engine owned by Nvidia), and Mono (the open source implementation of the Common Language Runtime, aka .NET).
How much of this you use is up to you. You can represent all your data structures as Unity objects, build your world in Unity's editor, turn on the physics, and let events take their course, with a minimum of scripting. Alternatively, you could turn off the physics engine, construct your world algorithmically, and explicitly program all the behaviour and physics of the objects.
You can choose to program behaviour entirely in Mono (using one of the languages C#, JavaScript, or Boo), or you can write it in another language and link it with your Unity project. (The actual integration with the game objects must be via Mono, but this can be a fairly thin layer if you like.)
The workflow is much the same as with any game engine. Artists make models and textures and animations, audio specialists make the sounds, programmers write shaders and behaviour.
The community of Unity programmers is very helpful, both at answers.unity3d.com and forum.unity3d.com. (And maybe here at Stack Exchange?)
The best way to find out is to try it out: the basic version is free, and you get a 30-day trial period for the "Pro" version.