If I send ether to a smart contract, how can I see in geth, that it was rejected? I want to see which of my transfers were accepted by an ICO and which were not. I don't see any such field in getTransaction.
You can use the following command to check the ICO contract balance, before and after the transaction to verify whether it was accepted or not.
Hope this helps.
Usually tokens contract will generate an event when a transaction is completed.
For example if a contract define the following events
event TokenCreated(address indexed _to, uint256 _amount, uint256 _tokens);
Then you can listen for TokenCreated event where the _to is you address.
It depends on the contract itself, there is no general answer to this. If you care about a specific contract, you need to look at it's code and find circumstances where it logs an event or alters it's own storage, and then poke around it's storage or scan transaction receipts for events. If you can find a storage location that isn't altered by it's creation and isn't 0, or find a relevant event, then you know the contract has been used at least once.