Find if Column Belongs to User Table I want to compute the number of columns with not null constraint in my database. So I thought about querying the table sys.all_columns:
select * from sys.all_columns   

The problem is that it provides me with extra information I dont need (columns in system defined tables).   

So I have to add some SQL code to determine whether some column belongs to User Defined Table or not. What is the best way to proceed ?
Do an inner join between sys.columns and sys.tables.  The latter table is the catalog view for user tables, so joining on object_id should give you the corresponding columns:

select c.*
from sys.columns c
inner join sys.tables t
on c.object_id = t.object_id;


Taking this a step further on what seems to be your end result, if you want to get all nullable columns in user tables, this quick query should work:

select
    object_name = 
        quotename(s.name) + 
        '.' + 
        quotename(t.name),
    column_name = quotename(c.name),
    c.is_nullable
from sys.columns c
inner join sys.tables t
on c.object_id = t.object_id
inner join sys.schemas s
on t.schema_id = s.schema_id
where c.is_nullable = 1;