Use these as your source data:
CREATE TABLE #table(ID int, A int, B int, C int);
INSERT #table VALUES(1,1,2,null),(1,999,888,3),(1,null,null,3);
Then run your queries. You'll see the discrepancy.
Your first query is looking for 3 conditions to be true. In the sample data I provided, there is no such row.
The second query is only testing 2 of those conditions, then limiting itself to a 4th condition (ID value). All of the sample data I provided uses the same value for ID, which effectively eliminates the other 2 conditions.
There is no enforced dependency of any relationship between these 4 conditions. Your original query is the only one that will provide the results you want. Breaking it up into separate queries can fail. Additionally it adds write activity/overhead to an otherwise read-only operation by inserting into the #myTable temp table.
I added NULLs to the source data as an additional complication. Imagine (or test) if ID is NULL.
I expect you'll reply "But ID is unique in that table" and/or "None of the columns are nullable". That wasn't specified in your original question, and even if it is true, you can still add rows that meet the 2nd condition but not the 1st.