do i need to check expiration cache in drupal from cache_get? I'm using drupal 6 and I've build table that is similar to cache (hook_schema) for using it with function cache_get/cache_set. 
I just want to be sure how things should work in drupal. 


To clean the table I'll need to use hook hook_flush_caches() where I'll decide if i want to clear expire data or whole cache? hook_flush_caches is called on cron?
In case I'll need to check data expiration by second, I'll need to do manually after cache_get function ?


This is kinda confusing...
It is actually pretty simple.

For your implementation of hook_flush_caches, all you need to do is return an array containing the names of your cache tables, eg

function mymodule_flush_caches ()
{
  return array("cache_mymodule");
}


drupal_flush_all_caches and cache_clear_all take care of the rest.  drupal_flush_all_caches is called anytime you manually clear the cache (the perforamnce page, admin menu, drush, etc).  system_cron does get called by cron, and also clears the cache tables, but does not do some of the other things that drupal_flush_all_caches does.

When you get something out of the cache with cache_get, expired items will have already been removed from the cache; you don't need to manually check expirations.  They will be handled automatically according to how you put them in the cache with cache_set.

That's it.