I am used to saying "I am in India.". But somewhere I saw it said "I am at Puri (Oriisa)". I would like to know the differences between "in" and "at" in the above two sentences.
There are many answers for this, but looking at the dictionary we get:
at: In or near the area occupied by; in or near the location of
in: Within the limits, bounds, or area of
People are usually using in to note a general location and at for a more specific location.
I'm in the building, at the front desk
I'm in New York, at the conference
I'm in New York, at the Empire State Building
EDIT: But note also the difference when in is used to indicate inside
I'm in the elevator = I'm inside the elevator
I'm at the elevator = I'm near the elevator
When talking about location, in is generally used for a larger area where there are numerous specific locations possible
I am in the United States.
I am in New York.
I am in the Chelsea neighborhood.
I am in my backyard.
The preposition at is generally used for a specific location or thing.
I am at the intersection of Hollywood and Vine [streets].
I am at the Empire State Building.
I am at my hotel.
I am at home.
I am at the old oak tree in my yard.
However, the above at usage is indifferent to whether you are indoors or outdoors. You could be on the street in front of your hotel or inside. You could be in your yard at home or in the bathroom at home.
If you want to convey that you are indoors at a specific location, you would use in
I am in the Empire State Building.
I am in my hotel.
I am in my home.
The above conventions reflect an American usage which may or may not be similar in other English speaking countries.
In can always be used to describe location in a country: in India, in the United States, in Japan. In is also used with cities: in Delhi, in Washington, in Tokyo, but in some contexts, at may also be found. It has long been the practice, for example, to speak of ‘Her Majesty’s Ambassador at [name of capital]’. That practice may continue in Indian English. If so, it would explain at Puri, but in an international context it will normally be safer to use in for most geographical locations.
Something missing from the other answers posted so far, I feel, is that at is appropriate where there is an expectation of or potential for travel away from the location, or where it's important to distinguish it from other potential locations. So if somebody asked where I was, I might say
I'm at the house
if I'd been at other locations that day and expected only to be there for a while (especially if the other person knew this). Similarly, I might say
I'm at the hotel.
For slightly different reasons, I'd say
I'm at the Hilton Hotel
to distinguish it from the other potential hotels.
In the house or hotel is more appropriate in other contexts but I"m not going to examine those exhaustively right now.
"At" is generally used for smaller, specific locations, like at home, at work, at Starbucks, at Comicon.
"In" is used for larger areas, like countries, towns, cities...
The at Puri example is non-standard. It's possible that the speaker was saying something like at [the XYZ in] Puri, using Puri as an abbreviation. That's my guess, anyway.