#C# <s>233</s> <s>221</s> 213 bytes
knocked off a few bytes by adapting Ghost's suggestion, and a few more from raznagul.
method takes an int array a as the list of fallen pins
string S(int[]a){string o="",x="",y="",z="";for (int i=10;i>0;){if(a.Contains(i)){x=" "+x;y="_____ "+y;}else{x="(.,.) "+x;y="( : ) "+y;}if(i==7|i<5&i--!=3) {o+=$"{z}{x}\n{z}{y}\n";x=y="";z+=" ";}}return o;}
wrapped
string S(int[]a){string o="",x="",y="",z="";for(int i=10;i>0;)
{if(a.Contains(i)){x=" "+x;y="_____ "+y;}else{x="(.,.) "+x;y="( :
) "+y;}if(i==7|i<5&i--!=3){o+=$"{z}{x}\n{z}{y}\n";x=y="";z
+=" ";}}return o;}
expanded
string S(int[] a)
{
string o = "", x = "", y = "", z= "";
for (int i = 10; i > 0;)
{
if (a.Contains(i))
{
x = " " + x;
y = "_____ " + y;
}
else
{
x = "(.,.) " + x;
y = "( : ) " + y;
}
if (i==7|i<5&i--!=3)
{
o += $"{z}{x}\n{z}{y}\n";
x = y = "";
z += " ";
}
}
return o;
}