Is it wise to drop fixed-length columns to free up space?
Dropping them will reclaim space if you rebuild indexes or run DBCC CLEANTABLE
New rows will not have these columns
Fixed length columns always have space reserved whether NULL or not (note: variable length columns with NULL don't consume space usually)
Don't shrink the database, it will only grow again and has other issues (out of scope here)
40GB is not big


Note: an index rebuild to reclaim space assumes you have a clustered index