• Literally speaking,

    a) "Select *" will return the result set , whereas "Count(*)/Count(1)" will return a scalar value and this will result in significance difference in terms of I/O

    b) Other fact is, there is no hard & fast rule to judge the performance; everything depends on the many factors like indexes used, statistics update, etc.....

    For your other question, you can pass the variable as a parameter. Do you have any concerns by doing so with respect to your scenario?