#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;
	}