All the schema operations that can be done in c* are done without downtime. You should limit these actions as a best practice to 1 client (not multiple concurrent clients) to avoid schema disagreement problems.

The schema changes that are allowed are as follows (and documented here):

cqlsh> help 
CQL help topics:
================
ALTER                        CREATE_TABLE_OPTIONS  SELECT
ALTER_ADD                    CREATE_TABLE_TYPES    SELECT_COLUMNFAMILY
ALTER_ALTER                  CREATE_USER           SELECT_EXPR
ALTER_DROP                   DELETE                SELECT_LIMIT
ALTER_RENAME                 DELETE_COLUMNS        SELECT_TABLE
ALTER_USER                   DELETE_USING          SELECT_WHERE
ALTER_WITH                   DELETE_WHERE          TEXT_OUTPUT
APPLY                        DROP                  TIMESTAMP_INPUT
ASCII_OUTPUT                 DROP_COLUMNFAMILY     TIMESTAMP_OUTPUT
BEGIN                        DROP_INDEX            TRUNCATE
BLOB_INPUT                   DROP_KEYSPACE         TYPES
BOOLEAN_INPUT                DROP_TABLE            UPDATE
COMPOUND_PRIMARY_KEYS        DROP_USER             UPDATE_COUNTERS
CREATE                       GRANT                 UPDATE_SET
CREATE_COLUMNFAMILY          INSERT                UPDATE_USING
CREATE_COLUMNFAMILY_OPTIONS  LIST                  UPDATE_WHERE
CREATE_COLUMNFAMILY_TYPES    LIST_PERMISSIONS      USE
CREATE_INDEX                 LIST_USERS            UUID_INPUT
CREATE_KEYSPACE              PERMISSIONS
CREATE_TABLE                 REVOKE

For regular columns and partition keys:

Compatible data types are as follows ( <--> denotes both way compatibility ; --> denotes one way compatibility)):
int --> varint
varchar <--> text
int --> blob
text --> blob
ascii --> blob
double -->blob
int --> blob
timeuuid --> blob
varchar --> blob
bigint --> blob
boolean --> blob
decimal --> blob
float --> blob
inet --> blob
ltimestamp --> blob
uuid --> blob
varint --> blob
timeuuid --> uuid

For clustering columns:
int --> varint
varchar <--> text

The reason clustering columns are different is because they must also be order-compatible (clustering columns mandate the order in which we lay out data on disk, hence the stricter requirement).

As you can see, for the most part, CQL3 is relatively strict when it comes to type changes and you want to make sure you pick the right types at design time. You can always create and delete columns if you need to chage due to some unforseen circumstances. We do have tools in DSE Analytics to help with these operational changes when needed.