Both are a little confusing. In a context or conversation, someone might understand them the way you said. But without any specific situation or context, both can be understood differently too.
회의 시간이 이제 30분 남았다.
If you say this while you are in a meeting, then it would mean "There are 30 minutes left until the meeting ends."
But if you are waiting for the meeting, then it can also mean "There are 30 minutes left until the meeting starts."
회의가 이제 30분 남았다. <= This one is just the same as the first sentence, because we already know you're talking about time as you said "30분". In this sentence, 회의 means 회의 시간.
For your sentece "there are 20 minutes left until 설날 ends"
I would say, "설날이 끝나기까지 20분이 남았어요." or "20분이 지나면 설날이 끝나요."
Variations are like..
"20분 후면 설날이 끝나요." "설날은 이제 20분 후면 끝나요."