How Segwit makes transactions smaller? What about the witness?
SegWit doesn't save space, per se.

What it does do is:


From the perspective of a non-upgraded node, it makes transactions seem smaller. The witness part is not recognized or considered by pre-fork nodes, so more of them can fit in a block.
From the perspective of an upgraded node, the block size is calculated differently. Less weight is assigned to witness data than to non-witness data. So for the purpose of the calculation, a SegWit transaction is considered lighter than a non-SegWit transaction. So more of them are allowed per block - but the physical data size of the block increases as a result.


SegWit was to be introduced anyway because it solves malleability etc. But it also offered an opportunity to increase the block size limit (to allow more transactions) without requiring a hard fork, and this opportunity was seized, resulting in the feature described above.