You need to specify all those fields for which you want to insert a value. You do not have to specify all the fields in the table!
As you noticed, any of the fields that you do not specify and which have a default restriction for them will be set to the specified default value. This is the "good thing" (tm) - for sure! This allows you to write less T-SQL embed code - all set defaults will already be set. I believe this is a great feature of SQL Server (and many other relational databases) - you can initialize things like “last modified” date fields, “today” when pasting without specifically adding these fields to the INSERT statement.
Any fields that are neither part of your INSERT statement nor have a default value will be left NULL.
, NOT NULL, INSERT ( NON NULL), .