Int for identity/primary key and Guid for public identifier, best practices?
Is it worth having both int and guid in the table or should I just drop the int entirely?


Yes, from the perspective that you can have the identity column be a unique clustered index to take advantage of inserts being append-only to the table, and you can have a nonclustered primary key on your GUID column for both security and uniqueness when locating records. 


  Any other settings I should place on the table?


You could consider using NEWSEQUENTIALID to have the GUID inserts be less random, or try to match the behavior natively in .NET. If someone were quite dedicated, they could perhaps guess the next sequential GUID. If you think you might attract that kind of attention, generate them in a normal, random way.

I'd also wanna make the identity column a BIGINT. They're much harder to run out of than INTs. People who get all up in arms about the 4 extra bytes per row have never dealt with the process of altering that attribute after running out of INTs.


  Is there a better option? Another impossible to guess sequence of some sort that doesn't take as much space?


Nope, you're on the right track.