#C# 233 221 213 203 bytes
C# 233 221 213 203 bytes
method takes an int array a as the list of fallen pins
string S(int[]a){string o="",x=o,y=o,z=o;for(int i=10;i>0;){var c=a.Contains(i);x=(c?" ":"(.,.) ")+x;y=(c?"_____ ":"( : ) ")+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=o,y=o,z=o;for(int i=10;i>0;) {var c=a.Contains(i);x=(c?" ":"(.,.) ")+x;y=(c?"_____ ": "( : ) ")+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 = o, y = o, z= o; for (int i = 10; i > 0;) { var c = a.Contains(i); x = (c ? " " : "(.,.) ") + x; y = (c ? "_____ " : "( : ) ") + y; if (i==7|i<5&i--!=3) { o += $"{z}{x}\n{z}{y}\n"; x = y = ""; z += " "; } } return o; } knocked off a few bytes by suggestions in comments from Ghost, raznagul and auhmaan.