An efficient encryption or decryption algorithm is one that runs in polynomial time. That is, its complexity is O(n^k), where k is some constant. That is, linear-time, quadratic-time, cubic-time, etc., algorithms are considered efficient.
A strong encryption algorithm is one that uses randomization when creating the cipher text: each encryption instance may produce a different ciphertext. On the other hand, the decryption algorithm must be deterministic and always output the same plaintext, regardless of the randomization used in the encryption algorithm.
Scenario: Alice and Bob want to send each other confidential messages, but the communication channel is insecure (anyone can listen to the messages going through this channel.) To keep the messages confidential, Alice and Bob could've agreed, ahead of time, on a symmetric encryption system and a secret key K.
If they did so, they can send messages to each other such that no one besides Alice and Bob can understand these messages. For instance, Alice will encrypt a message she wants to send to Bob using the key K, and, once receiving the message, Bob will decrypt it using the same key K. Again, no one else besides Alice and Bob must know the secret key.